전문가 정신

2018.07.22
로버트 C. 마틴, 『클린 코드』을 읽고

"단순히 돌아가는 코드에 만족하는 프로그래머는 전문가 정신이 부족하다. 나쁜 코드는 썩어 문드러진다. 점점 무게가 늘어나 팀의 발목을 잡는다."

프로그래머로 일한 지 2년이 넘었다. 지난 시간은 '급급했다'. 빠른 구현 속에서 실용적 고민도 했지만 부끄러운 코드도 많았다. 기술 부채와 유저 가치 사이의 조화는 늘 어려운 문제다.

갈무리

  • 보이스카우트 규칙: 캠프장은 처음 왔을 때보다 더 깨끗하게 해놓고 떠나라. 조금씩 개선하면 된다.
  • 의미 있는 이름: 추상적인 개념 하나에 단어 하나를 선택해 고수하라.
  • 함수: 한 함수는 한 가지 일만 해야 한다. 추상화 수준을 섞지 마라. 플래그 인수는 추하다.
  • 주석: 나쁜 코드를 주석으로 설명하지 말고 코드로 의도를 표현하라.
  • 형식 맞추기: 신문 기사처럼 작성하라. 고차원 개념에서 저차원 세부 사항으로 내려가야 한다.
  • 객체와 자료구조: 디미터 법칙을 따르라. 모듈은 자신이 조작하는 객체의 속사정을 몰라야 한다.
  • 오류 처리: 오류 코드 대신 예외를 사용하라. null을 반환하거나 넘기지 마라.
  • 단위 테스트: 깨끗한 테스트 코드는 가독성이 생명이다. Build-Operate-Check 패턴을 따르라.
  • 클래스: 작아야 한다. 단일 책임 원칙(SRP)을 지켜라.
  • 창발성: 중복을 없애고 의도를 표현하라.
  • 동시성: 동시성은 항상 성능을 높여주지 않는다. 공유 자원을 피하는 것이 상책이다.
  • 점진적인 개선: 프로그래밍은 과학보다 공예다. 지저분한 코드를 짠 뒤에 정리해야 한다.