캠프장은 처음 왔을 때보다 더 깨끗하게 해놓고 떠나라.
📌 프로그래밍
- 기계가 실행할 정도로 요구사항을 상세하게 명시하는 작업
- 명시한 결과를 코드라고 부름
📌 나쁜 코드
르블랑의 법칙(Leblanc’s Law) : 나중은 결코 오지 않는다.
- 개발 속도의 저하 → 코드를 고칠 때마다 다른 곳에서 문제가 발생하여 더욱 더 나쁜 코드가 됨
- 팀 생산성의 저하 → 생산성이 떨어져 새로운 인력을 투입해도 코드에 대한 이해도가 낮아 결국 나쁜 코드를 생성함
- 재설계? → 새로운 팀이 기존 기능과 추가 기능을 가진 시스템을 개발하기 시작하나, 모두 구현할 때가 되면 그렇게 새로 만들어진 시스템의 코드 역시 더러운 것을 발견할 수 있음
- 상사의 요청 → 나쁜 코드의 위험성을 이해하지 못하는 상사의 말을 듣는 것은 전문가답지 못함
- 업무 속도를 높이기 위해서는 코드를 깨끗하게 유지하는 습관이 필요함
📌 좋은 코드
🎈 비야네 스트롭스트룹(Bjarne Stroustrup) - C++ 창시자
- 우아하고 효율적인 코드
- 의존성을 최대한 줄이고 오류는 철저하게 처리
- 성능을 최적으로 유지
- 코드를 망치려는 유혹 → 나쁜 코드는 또다른 나쁜 코드를 만들어냄
🎈 그래디 부치(Grady Booch)
- 단순하고 직접적이며 잘 쓴 문장처럼 읽힘 → 가독성이 좋음
- 설계자의 의도를 숨기지 않고 명쾌한 추상화와 단순한 제어문으로 가득함 → 반드시 필요한 내용만 담아야 함
🎈 데이브 토마스(Dave Thomas)
- 다른 사람도 읽고 고치기 쉬움
- 여러 테스트 케이스가 존재 → Test Driven Development
- 메소드나 의존성, API는 명확하며 최소화
- 코드는 문학적으로 표현
🎈 마이클 페더스(Michael Feathers)
🎈 론 제프리스(Ron Jeffries)
- 중복을 최소화
- 한 가지 기능만 수행
- 제대로 표현하며 작게 추상화
🎈 워드 커닝햄(Ward Cunningham)
- 깨끗한 코드 : 짐작했던 기능을 그대로 수행하는 코드
- 아름다운 코드 : 코드가 문제를 풀기 위한 언어로 보이면