본문 바로가기
개발/리뷰

[클린코드 리뷰] 1. 좋은 코드와 나쁜 코드에 대하여

by -master 2022. 11. 6.

 

1. 나쁜 코드

 프로그래머라면 누구나 당연히 나쁜 코드로 고생한 경험이 있다. 그렇다면 묻겠다. 어째서 나쁜 코드로 짰는가?
급해서? 서두르느라? 아마 그랬으리라. 제대로 짤 시간이 없다고 생각해서, 코드를 다듬느라 시간을 보냈다가 상사한테 욕 먹을까봐, 지겨워서 빨리 끝내려고, 다른 업무가 밀려 후딱 해치우고 밀린 업무로 넘어가려고... 

 우리는 모두 자신이 짠 쓰레기 코드를 쳐다보며 나중에 손보겠다고 생각한 경험이 있다. 우리 모두는 대충 짠 프로그램이 돌아간다는 사실에 안도감을 느끼며 그래도 안 돌아가는 프로그램보다는 쓰레기가 좋다고 스스로를 위로한 경험이 있다. 다시 돌아와 나중에 정리하겠다고 다짐했었다. 물론 그때 그 시절 우리는 르블랑의 법칙을 몰랐다. 나중은 결코 오지 않는다.

 

 

2. 태도

 좋은 코드가 어째서 순식간에 나쁜 코드로 전략할까? 우리는 온갖 이유를 들이댄다. 원래 설계를 뒤집는 방향으로 요구사항이 변했다고 불평한다. 일정이 촉박해 제대로 할 시간이 없었다고 한탄한다. 멍청한 관리자와 조급한 고객과 쓸모없는 마케팅 부서와 전화기 살균제 탓이라 떠벌인다. 하지만 딜버트씨, 잘못은 전적으로 우리 프로그래머에게 있답니다. 우리가 전문가 답지 못했기 때문입니다.
 
 인정하기 어려우리라. 어째서 우리 잘못입니까? 요구사항은 어쩌구요? 일정은요? 멍청한 관리자와 쓸모없는 마케팅 인간들은요? 그들에게는 잘못이 없다는 말입니까?

 그렇다. 관리자와 마케팅은 약속과 공약을 내걸며 우리에게 정보를 구한다. 우리에게 정보를 구하지 않더라도 우리가 적극적으로 정보를 제공해야 마땅하다. 우리는 프로젝트를 계획하는 과정에 깊숙히 관여한다. 그러므로 프로젝트 실패는 우리에게도 커다란 책임이 있다. 특히 나쁜 코드가 초래하는 실패에는 더더욱 책임이 크다.

 일정에 쫓기더라도 대다수 관리자는 좋은 코드를 원한다. 그들이 일정과 요구사항을 강력하게 밀어붙이는 이유는 그것이 그들의 책임이기 때문이다. 좋은 코드를 사수하는 일은 바로 우리 프로그래머들의 책임이다.

 나쁜 코드의 위험을 이해하지 못하는 관리자 말을 그대로 따르는 행동은 전문가답지 못하다.

 

 

3. 원초적 난제

 그럼에도 모든 프로그래머가 기한을 맞추려면 나쁜 코드를 양산할 수 밖에 없다고 느낀다. 간단히 말해, 그들은 빨리 가려고 시간을 들이지 않는다.

 나쁜 코드를 양산하면 오히려 기한을 맞추지 못한다. 기한을 맞추는 유일한 방법은, 그러니까 빨리 가는 유일한 방법은, 언제나 코드를 최대한 깨끗하게 유지하는 습관이다.

 

 

4. 깨끗한 코드란?

- 우아하고 효율적인 코드,  깨끗한 코드는 한 가지를 제대로 한다.
- 깨끗한 코드는 단순하고 직접적이다. 잘 쓴 문장처럼 읽힌다. 설계자의 의도를 숨기지 않는다.
- 작성자가 아닌 사람도 읽기 쉽고 고치기 쉽다. 
- 깨끗한 코드는 언제나 누군가 주의 깊게 짯다는 느낌을 준다. 딱히 손 댈곳이 없다.
- 코드를 읽으면서 짐작했던 기능을 각 루틴이 그대로 수행한다면 깨끗한 코드로 불러도 되겠다.

 

 

 

 

출처 : 클린코드(애자일 소프트웨어 장인 정신), 로버트 C.마틴

반응형

댓글