클린 코드 1장에서는 나쁜 코드는 무엇이며, 깨끗한 코드는 무엇인지에 대해서 설명해준다. 또한, 깨끗한 코드가 필요한 이유에 대해서도 이야기해주는 장이다.
그렇다면 코드라는 것은 무엇일까? 클린코드 1장을 통해 확인해보자
코드가 존재하리라
- 코드는 기계가 이해하고 실행할 정도로 엄밀하고 정확하고 상세하고 정형화 되어야 한다.
- 코드는 요구사항을 표현하는 언어다.
나쁜코드
80년대 후반의 한 회사는 앱을 출시해 큰 인기가 있엇다. 하지만 그 이후 제품 출시 주기가 점점 느려졌고, 버그 수정이 되지 않았다. 회사가 망한 원인은 나쁜 코드 때문이었다.
코드를 보며 나중에 고치겠다고 다짐해도 나중은 오지 않는다.
나쁜 코드로 치르는 대가
나쁜 코드가 쌓이면 팀 생산성을은 떨어지고, 결국은 마침내 0에 근접하게 된다. 이를 막기 위해 개발자들은 여러 방법을 모색하게 되는데…
1. 재설계의 꿈
팀 생산성이 떨어지면, 결국 재설계를 하게 되는데, 재설계팀은 기존 시스템 기능을 모두 제공하면서, 기존 시스템의 변경점도 따라 잡아야 한다.
이를 방지하려면 시간을 들여서 깨끗한 코드를 만드는 노력이 비용을 절감하는 방법이다.
2. 태도
개발자는 프로젝트르 계획하는 과정에 깊숙히 관여한다. → 프로젝트 실패는 개발자에게도 커다란 책임이 있다.
나쁜 코드의 위험을 이해하지 못하는 관리자의 말을 그대로 따르는 것은 전문가 답지 못하다.
3. 원초적 난제
빨리가기 위해서 나쁜코드를 짜는것 보다, 깨끗한 코드를 짜고, 깨끗하게 유지하는 것이 가장 빨리가는 방법이다.
4. 깨끗한 코드라는 예술?
깨끗한 코드와 나쁜 코드를 구분할 줄 안다고 깨끗한 코드를 작성할 줄 안다는 것이 아니다.
코드 감각이 없는 프로그래머도 때로 나쁜코드를 알아볼 수 있다.
깨끗한 코드란?
비야네 스트롭스트룹 - C++ 창시자이자 C++ Programing Language의 저자
- 깨끗한 코드는 ‘보기에 즐거운 코드’
- 나쁜 코드는 나쁜 코드를 부른다.
- 성능을 최적으로 유지한다.
- 철저하게 오류가 처리 되어야 한다.
- 한가지를 잘 하는 코드
그래디 부치
- 깨끗한 코드는 단순하고 집접적이다.
- 가독성이 좋아야 한다.
- 설계자의 의도를 숨기지 않는다.
- 명쾌한 추상화와 단순한 제어문으로 이루어진다. → 추측이 아니라 사실에 기반해야 하며, 반드시 필요한 내용만 담아야 한다.
데이브 토마스 - OTI 창립자이자 이클립스 전략의 대부
- 다른 사람이 고치기 쉬운 코드
- 테스트 케이스가 없는 코드는 깨끗한 코드가 아니다
마이클 페더스
- 주의 깊게 작성한 코드
론 제프리스
- 모든 테스트를 통과한다
- 중복이 없다
- 시스템 내 모든 설계 아이디어를 표현한다.
- 클래스, 메서드, 함수 등을 최대한 줄인다.
- 중복을 피하라, 한 기능만 수행하라, 제대로 표현하라, 작게 추상화 하라.
위드 커닝햄
- 코드를 독해하느라 머리를 쥐어짤 필요가 없어야 한다. → 읽으면서 짐작한 대로 돌아가는 코드
우리는 저자다.
우리는 코드라는 책을 집필하는 저자다. 저자는 독자와 잘 소통할 책임도 있다.
우리는 코드를 짜면서 끊임없이 기존 코드를 읽는다.
보이스카우트 규칙
- 시간이 지나도 언제나 깨끗하게 유지할 것.
- 지속적인 개선이야말로 전문가 정신의 본질