본문 바로가기
책/Clean Code

[Clean Code] 1장 깨끗한 코드

by 오오오니 2024. 1. 30.

들어가는 말 <코드가 존재하리라>


  • 요구사항을 명세하는 수단이므로 코드는 사라질 수 없다.
    • 코드는 요구사항의 정밀하게 명시한 표현

나쁜코드 & 나쁜코드로 치르는 대가


잘 나가던 앱을 만든 회사가 망한 원인 은 나쁜코드 때문이다.

버전이 올라가도 버그가 남아있으며 프로그램이 죽는 횟수도 늘었다.

제대로 짤 시간이 없어서 나쁜코드를 보며 나중에 손보겠다고 생각하지만 다시 돌아와 정리하는 일은 오지 않는다.

*르블랑의 법칙 : 나중은 결코 오지 않는다.

나쁜 코드는 프로젝트 초반에는 빠른 것처럼 보이지만 수정에 많은 노력이 필요하며 엉뚱한 곳에서 문제가 생긴다.

결국 팀 생산성이 떨어져 인력을 추가하여 복구를 시도하지만 새 인력은 시스템 설계에 대한 이해가 떨어진다. 설계 의도에 맞는 변경과 설계 의도에 반하는 변경을 구분하지 못하고 생산성을 높여야 한다는 압력에 나쁜코드를 더 많이 양산한다.

프로그래머들의 태도

관리자가 일정과 요구사항을 강력하게 밑어붙이는 것이 그들의 책임이라면 좋은 코드를 사수하는 일은 프로그래머들의 책임이다.

비유로 들면 시간에 쫒기는 환자가 손을 씻지 않고 수술을 해달라고 요구해도 질병의 위험을 아는 전문가인 의사는 거부한다.

프로그래머도 마찬가지로 나쁜코드의 위험을 이해하지 못하는 관리자 말을 그대로 따르는 행동은 전문가답지 않다.

깨끗한 코드란?


유명하고 노련한 프로그래머들의 의견

  • 비야네 스트롭스트룹 :
    • 우아한 코드를 좋아한다.
    • → 우아한이란 “”보기에 즐거운 이라는 뜻이 있다. 깨끗한 코드는 보기에 즐거운 코드다.
    • 한 가지를 잘한다.
    • → 나쁜 코드는 너무 많은 일을 하려 애쓰다가 의도가 뒤섞이고 목적이 흐려진다.
  • 그래디 부치 :
    • 깨끗한 코드는 잘 쓴 문장처럼 읽힌다.
    • → 깨끗한 코드는 해결할 문제와 해법이 명확해야한다.
  • 큰 데이브 토마스 :
    • 깨끗한 코드는 작성자가 아닌 사람도 읽기 쉽고 고치기 쉽다.
  • 론 제프리스 :
    • 중복을 피하라. 한 기능만 수행하라. 제대로 표현하라. 작게 추상화하라
  • 워드 커닝햄 :
    • 짐작했던 기능을 그대로 수행하면 깨끗한 코드다.
    • → 코드를 독해하느라 머리를 쥐어 짤 필요가 없고 읽으면서 짐작한 대로 돌아가는 코드가 깨끗한 코드이다.
  • 저자의 생각 :
    • 이책에서 자세히 설명한다. 깨끗한 변수 이름, 깨끗한 함수, 깨끗한 클래스를 만드는 법을 소개한다.

보이스카우트 규칙


“캠프장은 처음 왔을 때보다 더 깨끗하게 해놓고 떠나라”

시간이 지나면서 엉망이 되는 코드를 막아야한다. 한번에 많은 시간과 노력을 투자해 코드를 정리할 필요가 없다. 변수 이름하나를 개선하고, 조금 긴 함수를 분할하고, 약간의 중복을 제거하고, 복잡한 if 문 하나를 정리하면 충분하다.

요약


나쁜코드는 팀생산성을 떨어트리고 변경과 확장이 어려워지며 나쁜코드의 생산을 가속화 시킨다. 깨끗한 코드를 만들기 위해서는 코드가 하나의 일을 하게 만들어 코드의 목적을 명확히 해야 한다. 의도를 밝힌 코드는 짐작한 일을 그대로 수행하게 한다. 변수 이름, 함수, 클래스를 꺠긋하게 만들어서 깨끗한 코드를 만들 수 있다.

*책 <클린코드> 공부내용


사진 출처 : https://catsbi.oopy.io/b67245f8-2bd5-414b-bde0-39bb49787cc3

' > Clean Code' 카테고리의 다른 글

[Clean Code] 11장 시스템  (0) 2025.03.17
[Clean Code] 9장 단위 테스트  (0) 2025.03.17
[Clean Code] 7 장 오류 처리  (0) 2025.03.17
[Clean Code] 5장 형식 맞추기  (0) 2025.03.17
[Clean Code] 3장 함수  (0) 2024.01.30