전문가 정신
2018.07.22
로버트 C. 마틴, 『클린 코드』을 읽고
로버트 C. 마틴, 『클린 코드』을 읽고
"단순히 돌아가는 코드에 만족하는 프로그래머는 전문가 정신이 부족하다. 나쁜 코드는 썩어 문드러진다. 점점 무게가 늘어나 팀의 발목을 잡는다."
프로그래머로 일한 지 2년이 넘었다. 지난 시간은 '급급했다'. 빠른 구현 속에서 실용적 고민도 했지만 부끄러운 코드도 많았다. 기술 부채와 유저 가치 사이의 조화는 늘 어려운 문제다.
갈무리
- 보이스카우트 규칙: 캠프장은 처음 왔을 때보다 더 깨끗하게 해놓고 떠나라. 조금씩 개선하면 된다.
- 의미 있는 이름: 추상적인 개념 하나에 단어 하나를 선택해 고수하라.
- 함수: 한 함수는 한 가지 일만 해야 한다. 추상화 수준을 섞지 마라. 플래그 인수는 추하다.
- 주석: 나쁜 코드를 주석으로 설명하지 말고 코드로 의도를 표현하라.
- 형식 맞추기: 신문 기사처럼 작성하라. 고차원 개념에서 저차원 세부 사항으로 내려가야 한다.
- 객체와 자료구조: 디미터 법칙을 따르라. 모듈은 자신이 조작하는 객체의 속사정을 몰라야 한다.
- 오류 처리: 오류 코드 대신 예외를 사용하라. null을 반환하거나 넘기지 마라.
- 단위 테스트: 깨끗한 테스트 코드는 가독성이 생명이다. Build-Operate-Check 패턴을 따르라.
- 클래스: 작아야 한다. 단일 책임 원칙(SRP)을 지켜라.
- 창발성: 중복을 없애고 의도를 표현하라.
- 동시성: 동시성은 항상 성능을 높여주지 않는다. 공유 자원을 피하는 것이 상책이다.
- 점진적인 개선: 프로그래밍은 과학보다 공예다. 지저분한 코드를 짠 뒤에 정리해야 한다.