Clean Code 1장 - 깨끗한 코드

1 분 소요

깨끗한코드

  • 코드를 써내려가는 시간보다 읽는 시간이 많다면 책에서 제시하는 보이스카우트 규칙을 다른 규칙에 앞서 특히 신경써야한다.
  • 보이스카우트 규칙
    • 보이스카우트 단원들이 야영장에 들어올 때보다 나갈 때 더 깨끗한 상태로 만들 의무가 있다.
    • 개발자들은 체크아웃해서 코드를 꺼낼 때보다 체크인해서 코드를 다시 넣을 때 더 깨끗한 상태로 만들 의무가 있다.

유지보수

  • TPM : Total Productive Management
    • 품질 관리론
    • TPM을 지탱하는 기둥 하나가 5S원칙이다.

5S 원칙

  1. 정리 Seiri : 적절한 명명법 등과 같은 방법을 사용해 무엇이 어디에 있는 지 알아야 함.
  2. 정돈 Seiton : 코드는 누구나 예상하는 위치에 있어야 함.
  3. 청소 Seiso : 과거 이력이나 미래 바람을 기억한 주석이나 주석으로 처리한 코드를 지워야 함.
  4. 청결 Seiketsu : 작업 공간을 청소하는 방식에 그룹이 동의한다.
  5. 생활화 Shutsuke : 관례를 따르고, 자기 작품을 자주 돌아보며 기꺼이 변경해야 함.
  • 아키텍쳐도, 깨끗한 코드도 와벽을 주장하지 않는다. 최선을 다해 정직하라 요구할 뿐이다.

코드가 존재하리라

  • 코드는 요구사항을 표현하는 언어다.
  • 요구사항에 더욱 가까운 언어를 만들 수도, 요구사항에서 정형 구조를 뽑아내는 도구도 만들 수 있다.
  • 하지만 어느 순간엔 정밀한 표현이 필요하여 코드는 항상 존재할 수 밖에 없다.

나쁜코드

  • 나쁜 코드는 생산성을 떨어뜨린다.
  • 르블랑의 법칙 - 나중은 결코 오지 않는다.
  • 몇 시간으로 예상된 업무가 몇 주가 걸리고, 한 두줄만 고치면 될 줄 알았던 코드가 수십개의 모듈의 변경을 필요로 한다면 나쁜 코드다.
  • 설계가 바뀌어서, 설계를 뒤집는 요구사항이 들어와서, 시간이 없어서는 핑계 -> 결국 내가 프로페셔널하지 못한 잘못이다. (반성하자…)
  • 기한을 맞추는 유일한 방법은 언제나 코드를 깨끗하게 유지하는 습관이다!

코드감각

  • 깨끗한 코드와 나쁜 코드를 구분할 줄 안다고 깨끗한 코드를 작성할 수 있는 것이 아니다.
  • 나같은 사람은 코드감각이 뛰어나지 않기에 투쟁을 통해 얻어내야만 한다. ㅠㅜ
  • 코드감각이 있어야 깨끗한 코드와 나쁜 코드를 구분할 수 있고,
  • 절제와 규율을 적용해 나쁜 코드를 깨끗한 코드로 바꾸는 전략도 파악한다.
  • 코드감각이 없어도 나쁜 코드를 구분해낼 수 있지만, 개선하는 것은 쉽지 않다.

비야네 스트롭스트룹 - C++ 창시자

  • 우아하고 효율적인 코드는 버그가 숨어들지 못한다.
  • 의존성을 최대한 줄여야 유지보수가 쉬워진다.
  • 오류는 명백한 전략에 의거해 처리한다.
  • 성능을 최적으로 유지해야 사람들이 원칙 없는 최적화로 코드를 망치는 유혹에 빠지지 않는다.
  • 깨끗한 코드는 한가지를 제대로 한다.

많은 이들이 말하는 깨끗한 코드란

1. 깨끗한 코드는 세세한 사항까지 꼼꼼하게 처리하는 코드다.
2. 코드는 추측이 아니라 사실에 기반해야 한다.
3. 테스트 코드가 없는 코드는 깨끗한 코드가 아니다.
4. 코드는 작을수록 좋다
5. 중복을 피하라
6. 한 기능만 수행해라
7. 코드가 읽으며 짐작한 대로 기능을 수행한다면 깨끗한 코드이다.

변수명 하나를 바꾸고, 조금 긴 함수를 나누고, 약간의 중복을 제거하며 복잡한 조건문 하나를 줄이는 것 모두 깨끗한 코드를 만들기 위한 노력이다.

카테고리:

업데이트:

댓글남기기