Clean Code - 1장 - 깨끗한 코드

Whale·2023년 2월 19일
0

CleanCode

목록 보기
1/6

코드가 존재하리라

저자는 언젠가 코드를 자동으로 완성히는 시대가 다가오고 그때가 되면 코드는 사라질까? 라는 의문을 말한다. 그러나 저자가 말하는 코드란, 요구사항을 상세하게 표현하는 수단이며, 어느 수준 이상의 요구사항은 코드의 도움없이 표현하기 불가능하다고 서술한다.

불가능하다는 근거로서 요구사항을 모호하게 줘도 우리의 의도를 정확히 꿰뚫어 프로그램을 완벽하게 실행하는 기계는 불가능하다 라고 말하고 있는데... 요즘 ChatGPT을 유용하게 쓰고있는 입장에서는 잘 공감이 가지 않는다.

나쁜코드

나쁜 코드로 치르는 대가

나쁜코드가 나오는 과정
1. 생산성이라는 압박으로 인해 초반에 마구잡이 개발이 진행된다.
2. 코드를 고칠때마다 엉뚱한곳에서 문제가 생긴다.
3. 매번 얽히고 설킨 코드를 해독해야하고, 해독한 코드에 또 얽히고 설킨 코드를 더한다
4. 추가인력을 투입해서라도 정리하려고 하지만, 추가인력은 위 1~3을 또 반복하게되고, 악순환이 시작된다.
5. 펑...

원대한 재설계의 꿈

  1. 더이상 생산성이 0에 가까운 코드를 버리고 재설계를 진행한다.
  2. 재설계는 기존 코드의 요구사항을 모두 반영하면서 새로운 기능도 추가해야한다.
  3. 미친듯한 일정속에서 재설계가 끝날즘이면 재설계한 코드조차 나쁜코드가 된다.
  4. 악순환의 반복...

자본은 자본대로 소비하고, 정리를 위해 결의한 코드조차 나쁜코드로 빠진다. 절절히 공감가는 이야기. 정말, 서비스중인 코드를 정리하는건 불가능할까?

태도

저자는 결국 나쁜 코드가 나오는 원인이 프로그래머가 책임을 다하지 않아서 라고 말하고 있다. 촉박한 일정, 설계에 반하는 요구사항 등 외부의 요인으로 인해 나쁜코드를 양산했다면, 외부요인을 설득하지 못한(책임을 다하지 못한) 프로그래머도 일정한 책임을 가진다는 이야기.

(솔직히 공감하기 힘들다. 외부란 보통 상사이고, 회사라는 환경은 녹녹치 않으니까.)

원초적 난제

당장 나쁜코드를 양산해서 업무속도를 높이더라도, 이건 자충수. 결국 후반으로 갈수록 시간을 갉아먹게된다. 기한을 맞추는 유일한 방법은 언제나 코드를 최대한 깨끗하게 유지하는 습관이다.

깨끗한 코드라는 예술?

깨끗한 코드를 구현하는 행위는 그림을 그리는 행위와 비슷하고, 좋은 프로그래머는 코드감각 을 통해 좋은코드, 나쁜코드를 구분할 수 있다.

(... 이게 뭔소리래... 나는 그런 감각이란게 없소...!)

깨끗한 코드란?

깨끗한 코드에 대한 여러 유명한 프로그래머들의 의견.

(모든 말들이 매우 이상적이고, 고개를 끄덕이게 되지만, 실제로 그렇게 했냐고 물어보면 할말이 없다...)

바야네 스트롭스트룹
논리는 간단해야하고, 오류는 명백한 전략에 의거해 처리한다. 성능은 최적으로 유지하며, 원칙없는 최적화는 코드를 망친다. 깨끗한 코드는 한가지를 제대로 한다.

그래디 부치
깨끗한 코드는 단순,직접적이고 잘 쓴 문장처럼 읽힌다. 결코 설계자의 의도를 숨기지 않는다. 명쾌한 추상화와 단순한 제어문으로 가득하다.

데이브 토마스
작성자가 아닌 사람도 읽고 고치기 쉬워야 한다. 테스트케이스가 존재한다. 깨끗한 코드에는 의미있는 이름을 붙는다. 특정목적을 달성하는 방법은 하나만 제공한다. 의존성은 최소로, 명확하게.

마이클 페더스
깨끗한 코드는 누군가 주의깊게 짰다는 느낌을 준다. 고치려고 살펴봐도 딱히 손 댈 곳이 없다. 작성자가 모두 고려했으니까!

론 제프리스
모든 테스트를 통과한다. 중복이 없다. 시스템 내 모든 설계 아이디어를 표현한다. 클래스, 메서드, 함수 등을 최대한 줄인다.

워드 커닝햄
코드를 읽으며 짐작했던 기능을 그대로 수행한다면 깨끗한 코드. 코드가 그 문제를 풀기위한 언어처럼 보인다면 아름다운 코드.

우리는 저자다

새 코드를 짤때 소비되는 시간은 대부분 기존 코드를 읽는 시간이다. 주변 코드를 읽지 않으면 새 코드를 짜지 못한다. 주변 코드가 읽기 쉬우면 새 코드를 짜기도 쉽다. 그러므로 급하다면, 서둘려 끝내려면, 숩게 짜려면, 읽기 쉽게 만들면 된다.

(음... 그래. 그러면 좋지. 그렇게 할 수 있으면 좋다...)

보이스카우트 규칙

캠프장을 처음 왔을떄보다 더 깨끗하게 해놓고 떠나라.

체크아웃 할떄보다 좀 더 깨끗한 코드로 체크인하면 코드는 절대 나빠지지 않는다. 변수 이름 하나를 개선하고, 조금 긴 함수 하나를 분할하고, 약간의 중복을 제거하는 등 조금이라도 나아지게 만들어야한다.

profile
그저 오래된 iOS 개발자.

0개의 댓글