프로그래밍은 숙련된 개발자에게도 어렵습니다. 프로그래밍은 높은 복잡도를 관리하고, 끊임없이 변화하는 정보를 한번에 모두 기억할 수 있어야 합니다.
그래서 프로그래밍은 많은 집중력이 필요합니다. 프로그래머를 산만하게 하거나 혼란스럽게 할 수 있는 그 어떤 것도 집중력을 깨트릴 수 있으며, 집중을 하지 못하는 개발자는 언제든지 실수할 위험이 있습니다.
당신은 동료들이 일하는 동안 시끄러운 음악을 틀거나 막대기로 다른 사람들의 머리를 찌르고 다니며 집중을 분산시킬 수 있습니다. 하지만 그렇게 너무 대놓고 할 필요 없습니다. 코드를 짜는 것만으로도 다른 사람의 집중력을 흐트러뜨릴 수 있다는 것입니다!
개발자들은 한 곳에 너무 많은 것이 들어가 있지 않는 깔끔한 코드를 좋아합니다. 불필요한 요소가 많은 코드는 집중하기 위해 노력하는 개발자에게 매우 안 좋은 요소입니다.
-
사용하지 않는 것들
앞으로 영영 사용하지 않을 것들을 코드상에 정의해서 다른 사람의 혼을 빼놓으세요! 합리적으로 판단할 수 있는 사람이라면 한 번 선언된 변수는 어디에선가 사용되리라 생각합니다. 그러니 사용되지 않는 변수를 두면 다른 사람들을 낚을 수 있습니다.
이 함수에서는 세 개의 변수(a, b, c)를 사용하고 있지만, 함수의 매개변수 목록에는 네 번째 인자인 d를 포함하고 있는 것을 볼 수 있습니다. 그러면 이 코드를 살펴보던 사람은 이 지점에서 멈춰야 합니다.
그리고 이런 질문을 하게 되겠죠. ' 여기서 d가 뭘 하는 거지?', '매개변수 목록이 잘못된 건가?', '혹은 함수가 완성이 덜 된 건가?', '이전에 사용했지만 지금은 더 이상 사용하지 않게 바뀐 건가? 더 이상 사용하지 않는 걸 매개변수 목록에서 삭제하는 걸 까먹은 거고?' 위의 코드는 그 어떠한 질문에도 대답해 주지 않습니다.
-
죽은 것들
쓸데없는 걸 채워 넣는 또 다른 방법은 바로 '죽은 코드'라고 불리는, 사용할 수 없는 코드를 집어넣는 것입니다. 이 코드들은 어떤 조건에서도 전근할 수가 없습니다. 아무런 목적 없이 거기에 있기 대문에, 이런 코드는 컴퓨터의 메모리와 개발자의 두뇌에 공간만 차지할 뿐입니다. 아래 예시를 보면 이게 무슨 말인지 쉽게 이해할 수 있을 것입니다.
이 경우에 println이라는 함수까지 도달할 수 있는 방법은 어디에도 없습니다. 왜냐면 해당 함수까지 모든 가능한 길이 println을 실행하기 전에 return에 의해서 종료되기 때문입니다. 하지만 이는 비교적 쉽게 알아챌 수 있는 예입니다. 코드 분석 도구가 이걸 찾아낼 수 있으며, 자바의 경우에는 컴파일러가 컴파일 에러를 일으킬 것입니다.
만약 이런 접근할 수 없는 코드를 쓰고 싶다면, 다음과 같이 훨신 더 찾기 어렵고 섬세한 코드를 작성해야 한합니다.
문제가 보이시나요? 컴파일러는 이 문제를 발견해낼 수 없습니다. 컴파일러의 관점에서 봤을 때, Math.random 내장 함수는 double 값을 반환하고 있기 때문입니다.
하지만 컴파일러는 Math.random이라는 함수가 0과 1사이의 값을 반환하기 위해 존재하는 방식이라는 것을 이해하지 못합니다. 이 코드를 몇 번을 실행시켜도 n은 절대로 10을 넘지 않기 때문에, if 조건문 안에 있는 코드에는 접근할 수가 없습니다. 왜냐면 if 조건문은 n이 10을 넘을 때만 실행되기 때문입니다.
※ 주의하기!
가끔 동료들이 "필요 없으면 다 지워라."라고 조언하는 경우도 있을 것입니다. 프로그램의 실행에 필요 없는 코드는 쓰레기거나, 심지어 잠재적인 에러가 되기도 합니다. 불필요한 코드가 있는 프로그램은 장애와 연관성이 높습니다(Card 등, 1986).
삭제한 코드가 나중에 필요한 경우를 걱정할 필요는 없습니다. 왜냐면 버전 관리 시스템에서 복구해서 사용하면 되기 때문입니다. 당연히 버전 관리는 하고 있겠죠?.....
《동료들 뒷목 잡게 만드는 나쁜 프로그래밍 습관》
예스24 교보문고 알라딘 인터파크
'IT 정보' 카테고리의 다른 글
개발자 동료에게 큰 혼란을 주는 테스트 작성 방법! (테스트 코드 함정) (0) | 2020.12.15 |
---|---|
동료들에게 욕먹는 개발자가 되고 싶다면? 불명확한 이름 사용하기! (0) | 2020.12.09 |
[게임 기획자 이야기⑤] 그렇게 바라던 기획팀장이 되었지만 (0) | 2020.11.24 |