왜 나쁜코드를 짰는가?
'나중에 고쳐야지' 하고 주석을 써놓지만,
나중은 결코 오지 않는다 (르블랑의 법칙)
*기술부채
나쁜코드는 개발 속도를 크게 떨어뜨린다
초반에는 빠른 속도로 진행되더라도 1-2년만에 굼뱅이처럼 기어가는 팀도 많다.
얽히고 설킨 코드엔 간단한 변경은 없다.
나쁜 코드가 쌓일 수록 팀 생산성은 떨어지고 마침내 0에 근접한다.
추가인력투입, 재설계를 시도하지만 나쁜코드는 또다른 나쁜코드를 양산한다.
깨끗한 코드를 만드는 노력이 비용을 절감하는 방법일 뿐만 아니라 전문가로서 살아남는 길이다.
왜 좋은 코드가 순식간에 나쁜 코드로 전락할까?
좋은코드가 나쁜코드로 전락한 잘못은 전적으로 프로그래머에게 있다.
대다수의 관리자는 진실을 원한다.
일정에 쫓기더라도 좋은 코드를 원하다.
좋은 코드를 사수하는 일은 프로그래머들의 책임이다.
나쁜 코드의 위험을 이해하지 못하는 관리자 말을 그대로 따르는 행동은 전문가답지 못하다.
프로그래머라면 나쁜 코드가 업무 속도를 늦춘다는 사실을 안다. 그럼에도 기한을 맞추려면 나쁜 코드를 양산할 수밖에 없다고 느낀다.
하지만, 나쁜 코드를 양산하면 속도가 곧바로 늦어지고 결국 기한을 맞추지 못한다.
빨리가는 유일한 방법은, 언제나 코드를 최대한 깨끗하게 유지하는 습관이다.
깨끗한 코드와 나쁜 코드를 구분할 줄 안다고 깨끗한 코드를 작성할 줄 안다는 뜻은 아니다.
깨끗한 코드를 작성하려면 '청결'이라는 감각을 활욜해 자잘한 기법들을 적용하는 절제와 규율이 필요하다.
'코드 감각'이 있으면 좋은 코드와 나쁜 코드를 구분하고, 정제와 규율을 적용해 나쁜 코드를 좋을 코드로 바꾸는 전략도 파악한다.
'코드 감각'을 타고나는 사람도 있겠지만, 나는 투쟁해서 얻어야한다.🦾
비야네 스트롭스트룹
"깨끗한 코드는 한 가지를 제대로 한다."
그래디 부치
"깨끗한 코드는 잘 쓴 문장처럼 읽히며, 결코 설계자의 의도를 숨기지 않는다."
데이브 토마스 (big)
마이클 페더스
론 제프리스
워드 커닝햄
위의 오브젝트 멘토 진영이 생각하는 깨끗한 코드를 실천한다면
깨끗하고 수준높은 코드를 작성할 수 있다.
하지만 전대적으로 '옳다'라고 단정짓지않는다.
프로그래머는 저자이자 독자이다. 코드를 짤때는 저자라는 사실을 인지하고, 내 코드를 읽을 독자와 잘 소통할 잭임이 있다는것을 기억하자.
새 코드를 짜면서 끊임없이 기존 코드를 읽기도 한다.
읽기 쉬운 코드를 짜기 쉽지 않더라고, 읽기 쉬운 코드르 짜는 것은 중요하다.
(기존 코드를 읽어야 새 코드를 짜므로, 읽기 쉽게 만들면 짜기도 쉬워진다)
급하다면, 서둘러 끝내려면, 쉽게 짜려면 "읽기 쉽게" 만들면 된다
잘 짠 코드가 전부는 아니다. 시간이 지나도 언제나 깨끗하게 유지해야 한다.
캠프장은 처음 왔을 때보다 더 깨끗하게 해놓고 떠나라.
체크아웃할 때보다 좀 더 깨끗한 코드를 체크인한다면 코드는 절대 나빠지지 않는다.
시간이 지날수록 코드가 좋아지는 프로젝트를 만들자!
PPP (Principles, Patterns, Preactices)
객체 지향 설계의 다섯가지 원칙 (SOLID)
이 책을 읽는다고 뛰어난 프로그래머가 된다는 보장은 없다. '코드 감각'을 확실히 얻는다는 보장도 없다. 단지 하나의 교본으로 다른 프로그래머가 생각하는 방식과 그들이 사용하는 기술과 기교와 도구를 소개할 뿐이다.
"연습해 연습!"
얼마나 많은 핑계를 대며 코드를 대충 짰는지 다시금 생각해보게 된다.
분명 내가 짠 코드인데 반복해서 읽어야했고, 간단한 수정이라는것은 없었다.
나아가 불편함을 인지하면서도 작은것부터 수정하려는 노력도 부족했다.
바꿔야지 바꿔야지 하면서도 항상 나중이라는 단어를 붙였다.
'나중은 오지않았다'
세세한 것까지 꼼꼼하게 주의를 기울이며
단순히 코드를 적고 끝나지 않고, 나 또한 내 코드를 읽어야한다는 것을 항상 생각해야겠다.