2022.02.19
1장. 깨끗한 코드
깨끗한 코드를 작성하려면 '청결'이라는 힘겹게 습득한 감각을 활용해 자잘한 기법들을 적용하는 절제와 규율이 필요하다. 열쇠는 '코드 감각'이다. 어떤 사람은 코드 감각을 타고난다. 어떤 사람은 투쟁해서 얻어야 한다. '코드 감각'이 있으면 좋은 코드와 나쁜 코드를 구분한다. 그뿐만이 아니다. 절제와 규율을 적용해 나쁜 코드를 좋은 코드로 바꾸는 전략도 파악한다. '코드 감각'이 없는 프로그래머도 때로는 나쁜 모듈을 알아본다. 하지만 그것으로 끝이다. '코드 감각'이 있는 프로그래머는 나쁜 모듈을 보면 좋은 모듈로 개선할 방안을 떠올린다. '코드 감각'으로 최고 방안을 선택한 후 여기서 거기까지 이동하는 경로를 계획한다. 다시 말해, 깨끗한 코드를 작성하는 프로그래머는 빈 캔버스를 우아한 작품으로 바꿔가는 화가와 같다. (8p)
나는 비야네가 말하는 효율이 단순히 속도만을 뜻하지는 않는다고 생각한다. CPU 자원을 낭비하는 코드도 우아하지 못하다. 보기에 즐겁지 못하다. 그리고 우아하지 않은 코드는 바람직하지 않은 결과를 초래한다. (9p)
비야네는 철저한 오류 처리도 언급한다. 세세한 사항까지 꼼꼼하게 신경 쓰라는 말이다. 프로그래머들이 대충 넘어가는 부분 중 하나가 오류 처리다. 메모리 누수, 경쟁 상태(race condition), 일관성 없는 명명법이 또 다른 예다. 한 마디로 요약하면, 깨끗한 코드는 세세한 사항까지 꼼꼼하게 처리하는 코드다. 깨끗한 코드는 한 가지에 '집중'한다. (10p)
론 제프리스 (Ron Jeffries):
간단한 코드는
코드를 읽는 시간 대 코드를 짜는 시간 비율이 10대 1을 훌쩍 넘는다. 새 코드를 짜면서 우리는 끊임없이 기존 코드를 읽는다. 비율이 이렇게 높으므로 읽기 쉬운 코드가 매우 중요하다. (18p)
잘 짠 코드가 전부는 아니다. 시간이 지나도 언제나 깨끗하게 유지해야 한다. 시간이 지나면서 엉망으로 전락하는 코드가 한둘이 아니다. 미국 보이스카우트가 따르는 간단한 규칙이 우리 전문가들에게도 유용하다. "캠프장은 처음 왔을 때보다 더 깨끗하게 해놓고 떠나라."
한꺼번에 많은 시간과 노력을 투자해 코드를 정리할 필요가 없다. 변수 이름 하나를 개선하고, 조금 긴 함수 하나를 분할하고, 약간의 중복을 제거하고, 복잡한 if문 하나를 정리하면 충분하다. (19p)
"연습해 연습!" (20p)
효율적이고 읽기 쉬운, 우아한 코드를 짤 수 있는 사람이 되고 싶다.
르블랑의 법칙(leblanc's Law) : 나중은 절대 돌아오지 않는다. (Later equals never.)