아래 있는 글과 약간의 중복은 있습니다, 출처는 제 위키입니다: http://eclipse.or.kr/wiki/분류:프로그래밍_은어 이 은어들은 모두 잘못된 프로그래밍을 비꼬기 위한 은어들이며,
개인적으로 가장 혐오하고 피해가 심각하다고 생각하는 것들을 붉게 표시해 봤습니다.
- UFO 버그: UFO 버그는 고객에 의해 보고되는 버그로, 버그가 존재하지 않음을 증명하고 보여주어도, 계속해서 보고되며, 고객들은 반드시 그 버그가 존재한다고 믿는다.
- 게토 코드: 게토코드(Ghetto Code)란 코드 중 특정 부분이 우아하지 않은 차선책이 적용된 구획을 말한다. 이는 과거 독일이 유대인 수용시설인 게토에서 유래했다.
- 닌자 주석: 닌자 주석이란 보이지 않는 주석, 비밀 주석, 혹은 "주석 좀 쓰라고
이XX야!"로 언급된다. - 돼지 립스틱 코드(Pig's Lipstick Code): 돼지 립스틱 코드(Pig's Lipstick Code)란 오래되어 엉망이 되었거나 스파게티 코드들이 래퍼 객체에 의해 잘 숨겨진 것을 말한다. 신입 개발자들은 래퍼 객체의 API만 보고 잘 디자인 된 우아한 객체지향 코드라고 생각하지만, 깊이 있는 일을 시작하게 되면, 얼마나 개판인지 깨닫게 된다.
- 라비올리 코드: 라비올리 코드(Ravioli Code)란 너무 작은 부분까지 약결합을 가지는 수 많은 객체로 나누어 작성된 프로그램 구조를 말한다. 이 용어는 과도한 인캡슐레이션 및 모듈화의 형상이 작은 파스타 파우치에 치즈, 고기, 야채등을 담은 라비올리와 유사성이 있어 만들어졌다. 인캡슐레이션은 결합도와 응집성 측면에서, 일반적으로는 바람직한 일이지만, 지나치게 되면 콜 스택을 너무 부풀게 하고, 유지보수를 힘들게 만든다.
- 만델 버그: 만델 버그(Mandelbug)란 너무나 복잡하면서도, 규칙성이 없는 부작용을 야기하는 버그를 지칭하며, coehlo가 만든 단어이다. 프랙탈의 창시자인 브누아 만델브로의 이름을 따서 지어졌다.
- 바클라와 코드: 바클라와(터키어:Baklava) 코드란 계층이 너무 심하게 나뉘어져 있는 코드를 말한다. 바클라와는 터키의 음식으로 얇은 유프카를 층층히 겹쳐 만든다.
- 상처투성이 코드: 상처 투성이 코드(Scar Tissue Code)란 주석처리된 코드가 여전히 남아, 체크인 버전에 포함되어 있는 것을 말한다. 덤으로 주석처리된 이유가 씌여있지 않은 것이 보통이다.
- 성난 여자친구 버그: 성난 여자친구 버그(Mad girlfriend bug)란 뚜렷한 오동작이 있는데도 불구하고, 애플리케이션은 모든 것이 정상이라는 메시지만 보여주는 경우를 말한다. 이 단어는 jeduan-cornejo이 만들었고,
그의 여자친구는 음... - 소세지 코드: 소세지 코드(Sausage Code)란 잘돌아가는 API이기는 하지만, 일단 어떻게 만들어진 것인지 내부를 조사해 보고 나면, 절대 사용하고 싶지 않아지는 코드를 말한다.
- 슈뢰딩거의 버그: 슈뢰딩거의 버그(Schrödinbug)란 누군가 소스코드를 열어보기 전까지(상자를 열어보기 전까지), 기능이 정상과 오작동을 오가며 파동하는 것을 말한다. (슈뢰딩거의 고양이가 삶과 죽음 사이에서 요동하는 것 처럼). 소스코드를 열어보면, 영구적인 버그로 상태가 고정된다. aaronaught이 만든 단어이다.
- 스머프 명명 규약: 스머프 명명 규약(Smurf Naming Convention)이란 모든 클래스가 같은 접두어를 갖는 경우를 말한다. Sal이 만든 단어이다.
- 스위스 군용 칼 코드: 스위스 군용 칼 코드란 다양한 기능이 한 모듈에 다 뭉쳐져 있는 경우를 말한다. 너무 많은 일을하고, 어떤 일도 제대로 못한다.
- 스파게티 코드: 스파게티 코드(Spaghetti Code)란 코드가 너무 많은 GOTO 문이나, 복잡한 예외 처리, 스레드등 구조적으로 정리되지 않은 수 많은 경우의 수를 가지고 작동되도록 씌여진 코드를 의미한다. 프로그래밍의 흐름도가 마치 보울에 담긴 스파게티 코드를 보는 것 처럼 보인다고 붙여진 이름이다.
- 어쩌라고 보고서: 어쩌라고 리포트(Shrug Report)란 에러메시지나, 로그, 에러의 재현 방법이 포함되지 않고, 불명확한 문제의 기술만 담긴 보고서를 말한다. 보통 이 보고서는 "안되는데요" 라는 단어를 포함한다. 이 용어는 aaronaught이 만들었다.
- 엑스칼리버 버그: 엑스칼리버 버그(Excalibur Bug)란 회사의 모든 개발자가 수정하려고 시도 했었으나 아무도 성공하지 못한 버그를 말한다.
- 오토파일럿 코드: 오토 파일럿 코드(Autopilot Code)란 개발자가 하고있는 일에 대해 별다른 깊은 생각 없이 씌여진 코드를 말한다.
- 요다 조건문: 요다 조건문(Yoda Conditions)란 조건문을 기술 할 때, if(변수 == 상수) 대신 if (상수 == 변수) 같이 상수를 앞에 쓰는 경우를 말한다. 이는 '만약 하늘이 푸르다면' 대신 '만약 푸름이 하늘이라면' 처럼 이야기하는 것과 다를바 없다. 이 용어는 zneak이 만들었다. 주로 널 체크가 귀찮은 경우 잘 발견된다.
- 저당 코드: 저당 코드(Mortgage Code)란 코드가 너무 엉망진창이고 복잡해서, 오직 당신만이 이를 유지 보수 할 수 있어서, 고용주가 당신을 해고할 수 없게 된 상황을 말한다. 이는 직업의 안정성을 보장해 준다.
- 젠가 코드: 젠가 코드란 분명히 엉망인 것을 알지만, 그 코드에 대해 의존성을 갖는 다른 코드가 너무 많아 제거할 수 없는 코드를 말한다. 이 코드를 제거하면 와르르르 무너진다.
- 종이 쇼핑백 버그: 종이 쇼핑백 버그(Brown Paper Bag Bug)는 공개적으로 릴리즈에 포함된 버그로, 너무 쪽팔린 나머지 개발자가 종이 쇼핑백이라도 뒤집어써서, 한동안 얼굴을 가려야 할판인 경우를 나타낸다.
- 카운터 버그: 카운터(Counter Bug)란 당신이 만든 버그를 재현하려는 사람이 만든 재현 코드에서 당신이 찾은 버그이다.
- 페르마의 마지막 댓글: 페르마의 마지막 댓글(Fermat's Last Post )은 보통 버그 추적 시스템의 특정 버그나 메일링에 투고되며, 버그를 간단히 수정할 수 있는 방법이나 우회할 수 있는 방법을 말한다. 이러한 댓글은 그 방법의 실체나 원리를 결코 설명하지 않으며, 저자는 다시 다른 글을 쓰지 않고 사라진다. 이 용어는 Alan Moore가 만들었으며 페르마의 마지막 정리에서 유래했다.
- 포켓몬 예외 처리: 포켓몬 예외 처리란 try catch 문에서, 모든 예외를 Exception으로 다 잡아버리는 것을 말하며, woot4moo가 만든 말이다. 포켓몬의 볼 캡슐은 아무 몬스터나 다 잡아 넣을 수 있다는 것에 유래한다.
- 프로토덕션: 프로토덕션(Protoduction)이란 프로토타입이 바로 제품화 된 경우를 지칭한다.
- 하이젠버그: 하이젠버그(Heisenbug)란 조사를 시작하면 그 형질이 변경되거나 사라지는 버그를 말한다. Mike Robinson이 하이젠버그 불확정성 원리를 빗대 만든 단어이다. IE9시절 콘솔을 열었을때만 console 객체가 존재하기 때문에, 콘솔을 확인 없이 참조한 경우, 에러가 발생했는데, 이를 잡으려고 디버그 창을 열면 콘솔창이 나타나며 버그가 사라지는 것이 대표적 사례이다.
- 힉스-보손 버그: 힉스-보손(Higgs-Bugson)란, 사용자 보고서나, 이벤트 로그등을 분석 해 볼 때, 낮은 확률로 존재할 것으로 추측되는 가상의 버그이다. 실존하는지 여부를 알 수 없고, 원인을 알 수 없기 때문에 이를 개발환경에서 재현하는 것은 매우 어렵거나 불가능하다. 이를 발견하기 위해서는 거대한 강입자 디버거가 필요하다.