반응형
『Clean Code(클린 코드) 애자일 소프트웨어 장인 정신 - 로버트 C. 마틴』 을 읽고 요약한 내용입니다.
코드가 존재하리라
기계가 실행할 정도로 상세하게 요구사항을 명시하는 작업, 바로 이것이 프로그래밍이다. 이렇게 명시한 결과가 바로 코드다.
나쁜 코드
우리 모두는 자신이 짠 쓰레기 코드를 쳐다보며 나중에 손보겠다고 생각한 경험이 있다. 우리 모두는 대충 짠 프로그램이 돌아간다는 사실에 안도감을 느끼며 안 돌아가는 프로그램보다 돌아가는 쓰레기가 좋다고 스스로를 위로한 경험이 있다. 다시 돌아와 나중에 정리하겠다고 다짐했었다. 나중은 결코 오지 않는다.
나쁜 코드로 치르는 대가
나쁜코드는 개발속도를 저하시키며 얽히고설킨 코드를 더한다. (...) 기한을 맞추는, 빨리 가는 유일한 방법은, 언제나 코드를 최대한 깨끗하게 유지하는 습관이다.
프로그래머의 깨끗한 코드 정의
- 깨끗한 코드는 한가지에 집중 한다. 각 함수와 클래스와 모듈은 주변 상황에 현혹되거나 오염되지 않은 채 한길만 걷는다. - 비야네 스트롭스트룹
- 코드는 추측이 아니라 사실에 기반해야 한다. 반드시 필요한 내용만 담아야 한다. 코드를 읽는 사람에게 프로그래머아 단호하다는 인상을 줘야 한다. “가독성” - 그래디부치
- TDD : 테스트 케이스가 없는 코드는 깨끗한 코드가 아니다. 아무리 코드가 우아해도, 아무리 가독성이 높아도, 테스트 케이스가 없으면 깨끗하지 않다. ‘최소’ 작을수록 좋다. - 큰 데이브 토마스
- 깨끗한 코드는 주의 깊게 작성한 코드다. 누군가 시간을 들여 깔끔하고 단정하게 정리한 코드다. 주의를 기울인 코드다. - 마이클 페더스
- 중복을 피하라. 한기능만 수행하라. 제대로 표현하라. 작게 추상화하라. - 론 제프리스
- 모든 테스트를 통과한다.
- 중복이 없다.
- 시스템 내 모든 설계 아이디어를 표현한다.
- 클래스, 메서드, 함수 등을 최대한 줄인다.
- 코드를 읽으면서 짐작했던 기능을 각 루틴이 그대로 수행한다면 깨끗한 코드라 불러도 되겠다. - 워드 커닝
우리는 저자다
- Javadoc 에서 @ author 필드를 생각하자.
- 코드를 작성할때는 자신이 저자라는 사실을, 나의 노력을 보고 판단을 내릴 독자가 있다는 사실을 명심하자.
- 새 코드를 짜면서 우리는 끊임없이 기존 코드를 읽는다. 그러므로 서둘러 끝내려면, 쉽게 짜려면, 읽기 쉽게 만들면 된다.
보이스카우트법칙
- 캠프장은 처음 왔을 때보다 더 깨끗하게 해놓고 떠나라.
- 지속적인 개선이야말로 전문가 정신의 본질이다.
아래의 두 문장이 1장의 요지라는 생각이 든다. 일단 돌아가면 된다는 안일했던 태도, 나 자신도 코드의 저자이자 독자 임에도 누군가가 내 코드의 독자가 있다는 사실을 미처 인지하지 못했음을 반성하게 한다.
빨리 가는 유일한 방법은, 언제나 코드를 최대한 깨끗하게 유지하는 습관이다.
코드를 작성할때는 자신이 저자라는 사실을, 나의 노력을 보고 판단을 내릴 독자가 있다는 사실을 명심하자.
반응형