[Clean Code] 클린코드 1장 : 깨끗한 코드

    클린코드(로버트C. 마틴) 1장을 읽고...

     

    코드가 존재하리라

    코드는 요구사항을 상세히 표현하는 수단이다.

    어느 수준에 이르면 코드의 도움 없이 요구사항을 상세히 표현하는 것은 불가능하다.

    고도로 추상화된 언어나 특정 응용 분야 언어로 기술하는 명세 역시 코드이므로 코드는 사라지지 않을 것이다.

     

    나쁜 코드

    · 우리는 모두 자신이 짠 쓰레기 코드를 나중에 손보겠다고 생각한 경험이 있다.

    · 대충 짠 프로그램이 돌아간다는 사실에 안도감을 느끼고, 안 돌아가는 프로그램보다 돌아가는 쓰레기가 좋다고 스스로 위로를 한 경험이 있다. 

     

    → 르블랑의 법칙: 나중은 결코 오지않는다.

     

    나쁜 코드로 치르는 대가 

    나쁜 코드가 쌓일 수록 팀 생산성은 떨어진다. 생산성을 증가시키기 위해 프로젝트에 인력을 추가로 투입한다.

    하지만 새 인력은 설계에 대한 조예가 깊지 않다. 결국 나쁜 코드는 나쁜코드를 더 많이 양산한다.

     

    깨끗한 코드란

    나쁜 코드가 심각한 장애물이란 사실을 납득했으니,

    이제 '깨끗한 코드'가 무엇이고 어떻게 작성해야 하는지 알아야 한다.

    깨끗한 코드를 여러 프로그래머를 통해 알아 보자.

     

     

    1. 비야네 스트롭스트룹

     

    " 나는 우아하고 효율적인 코드를 좋아한다. 논리가 간단해야 버그가 숨어들지 않는다.

    오류는 명백한 전략에 의거해 철저히 처리한다. 성능을 최적으로 유지해야 사람들이

    원칙 없는 최적화로 코드를 망치려는 유혹에 빠지지 않는다.

    깨끗한 코드는 한 가지를 제대로 한다."

     

    · '우아하다'의 정의에  따르면 "외양이나 태도가 기품 있고, 보기에 즐거운; 교묘하고 단순해 보기에 즐거운"이라는 표현으로 되어있다. 즉 깨끗한 코드는 단순하고, 보기에 즐거운 코드이다. 

    · 또한 비야네는 효율도 언급하는데, 이는 속도뿐 아니라 cpu 자원을 낭비하지 않는 것을 의미한다.

     

     

    2. 그래디 부치

     

    "깨끗한 코드는 단순하고 직접적이다. 깨끗한 코드는 잘 쓴 문장처럼 읽힌다.

    깨끗한 코드는 결코 설계자의 의도를 숨기지 않는다. 오히려 명쾌한 추상화와 단순한 제어문으로 가득하다"

     

     

    3. 데이브 토마스

     

    "깨끗한 코드는 작성자가 아닌 사람도 읽기 쉽고 고치기 쉽다. 단위 테스트 케이스와 인수 테스트 케이스가 존재한다. ..."

     

    · 세 프로그래머 모두 가독성을 강조하지만,

      데이브 토마스는 이에 더해 깨끗한 코드는 다른 사람이 고치기 쉽다는 것 또한 강조한다.

    · 읽기 쉬운 코드와 고치기 쉬운 코드는 엄연히 다르다.

     

     

    4. 론 제프리스

     

    · 모든 테스트를 통과한다.

    · 중복이 없다.

    · 시스템 내 모든 설계 아이디어를 표현한다.

    · 클래스, 메서드, 함수 등을 최대한 줄인다.

     

    우리들 생각

    · 이 책은 우리 오브젝트 멘토 진영이 생각하는 깨끗한 코드를 설명한다.

      (절대적으로 옳은 문파는 없으므로 절대적으로 옳다는 단정은 금물이다)

    · 코드를 읽는 시간 대 짜는 시간 비율이 10대 1을 훌쩍 넘는다. 새 코드를 짜면서 우리는 끊임없이 기존 코드를 읽는다.

    · 즉, 읽기 쉬운 코드가 매우 중요하다.  비록 읽기 쉬운 코드를 짜기란 쉽지 않지만 기존 코드를 읽어야 새코드를 짜므로 읽기 쉽게 만들면 짜기도 쉬워진다.

     

    보이스카우트 규칙

    "캠프장은 처음 왔을 때보다 더 깨끗하게 해놓고 떠나라"

     

    · 체크아웃할 때 보다 좀 더 깨끗한 코드를 체크인한다면 코드는 절대 나빠지지 않는다.

    · 변수 이름 하나를 개선하고, 조금 긴 함수 하나를 분할하고, 약간의 중복을 제거하고, 복잡한 if문 하나를 정리하면 충분하다.

     

    결론

    이 책을 읽는다고 뛰어난 프로그래머가 된다는 보장은 없다.

    단지 뛰어난 프로그래머가 생각하는 방식과 그들이 사용하는 기술, 기교와 도구를 소개할 뿐이다.

     

    댓글