1장 깨끗한 코드

Jun·2021년 8월 10일
1

클린 코드

목록 보기
1/7

계속 수정됩니다.

코드를 하나하나 짚어가며 저자가 코드를 고쳐간 방식을 이해하고 납득해야 가치를 발휘하는 책이다.

5S 철학

  1. 정리seiri : 적절한 명명법
  2. 정돈seiton : 코드는 누구나 예상하는 위치에 있어야 한다.
  3. 청소seiso : 필요없는 주석을 제거하라.
  4. 청결seiketsu : 일관적인 구현 스타일과 기법의 필요성, 표준
  5. 생활화shutsuke : 관례를 따르고, 자기 작품을 자주 돌아보고, 기꺼이 변경하는 규율

책의 구성

  1. 깨끗한 코드를 작성하는 원칙, 패턴, 실기
  2. 사례 연구. 코드를 깨끗하게 고치는, 즉 문제가 있는 코드를 문제가 더 적은 코드로 바꾸는 연습
  3. 사례 연구를 만들며 수집한 냄새와 휴리스틱

휴리스틱: 불충분한 시간이나 정보로 인하여 합리적인 판단을 할 수 없거나, 체계적이면서 합리적인 판단이 굳이 필요하지 않은 상황에서 사람들이 빠르게 사용할 수 있게 보다 용이하게 구성된 간편추론의 방법

휴리스틱 함수: 가용한 정보를 기반으로 각 분기 단계에서 어느 한 분기를 선택하기 위해 사용하는 다양한 탐색 알고리즘의 대안 함수

깨끗한 코드

요구사항을 명시하는 작업이 프로그래밍, 이렇게 명시한 결과가 바로 코드.

시간 압박은 나쁜 코드를 생산하게 하고 나쁜 코드는 개발 속도를 크게 떨어트린다.

나쁜 코드를 양산하면 기한을 맞추지 못한다. 기한을 맞추는 유일한 방법은 언제나 코드를 깨끗하게 유지하는 습관이다.

깨끗한 코드를 작성하려면 '청결'이라는 힙겹게 습득한 감각을 활용해 자잘한 기법들을 적용하는 절제와 규율이 필요하다. 열쇠는 '코드 감각'이다.
'코드 감각'이 있는 프로그래머는 나쁜 모듈을 보면 좋은 모듈로 개선한 방안을 떠올린다.

나쁜 코드를 고치면서 오히려 더 나쁜 코드를 만든다.
깨진 창문이 더 깨져도 사람들은 상관하지 않는다.

깨끗한 코드는 세세한 사항(메모리 누수, 경쟁 상태, 일관성 없는 명명법 같은 오류 처리)까지 꼼꼼하게 처리하는 코드다.

깨끗한 코드는 한 가지에 '집중'한다. 각 함수와 클래스와 모듈을 주변 상황에 현혹되거나 오염되지 않은 채 한길만 걷는다.

깨끗한 코드는 결코 설계자의 의도를 숨기지 않는다. 오히려 명쾌한 추상화와 단순한 제어문으로 가득하다.
반드시 필요한 내용만 담자.

깨끗한 코드는 작성자가 아닌 사람도 읽기 쉽고 고치기 쉽다.
테스트 케이스가 존재한다.
의미 잇는 이름이 붙는다.
특정 목적을 달성하는 방법은 하나만 제공한다.
의존성은 최소이며 각 의존성을 명확히 정의한다.
API는 명확하며 최소로 줄였다.

깨끗한 코드는 세세한 사항까지 꼼꼼하게 신경쓴 코드다.

단순한 코드

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

깨끗한 코드를 만드는 비결

  1. 중복 줄이기: 객체가 여러 기능을 수행한다면 여러 객체로 나눈다. 메서드 추출 리팩터링 기법을 적용해 기능을 명확히 기술하는 메서드 하나와 기능을 실제로 수행하는 메서드 여러 개로 나눈다.
  2. 표현력 높이기: 의미 있는 이름을 사용한다.
  3. 초반부터 간단한 추상화 고려하기: 어떤 집합에서 특정 항목을 찾아낼 필요가 생길 때 추상 메서드나 추상 클래스를 만들어 실제 구현을 감싼다. 이렇게 하면 실제 구현은 언제든지 바꿔도 괜찮다.

읽으면서 짐작한 대로 돌아가는 코드가 깨끗한 코드다.

코드가 그 문제를 풀기 위한 언어처럼 보인다면 아름다운 코드다.

우리는 저자다. 저자에게는 독자와 잘 소통할 책임도 있다. 코드를 짤 때는 자신이 저자라는 사실을, 저자의 노력을 보고 판단을 내릴 독자가 있다는 사실을 기억하자.

보이스카우트 규칙: 체크아웃할 때보다 좀 더 깨끗한 코드를 체크인한다면 코드는 절대 나빠지지 않는다.

0개의 댓글