클린코드 5장/6장

아빠는 외계연·2023년 6월 12일
0

5장. 형식 맞추기

형식을 맞추는 목적

  • 코드 형식은 의사소통의 일환이다.
  • 오늘 구현한 코드의 가독성은 앞으로 바뀔 코드의 품질에 막대한 영향을 끼친다.

원활한 소통을 장려하는 코드 형식

  • 신문 기사처럼 작성하라
    • 이름만 보고도 파악이 가능하도록 신경써서 짓는다.
    • 대다수의 기사는 매우 짧다.
  • 개념은 빈 행으로 분리하라
    • 빈 행은 새로운 개념을 시작한다는 시각적 단서이다.
  • 세로 밀집도
    • 서로 밀접한 코드 행은 세로로 가까이 놓여야 한다.
    • 세로 거리로 연관성을 표현한다.
      • 연관성은 한 개념을 이해하는 데 다른 개념이 중요한 정도이다.
  • 변수 선언
    • 변수는 사용하는 위치에 최대한 가까이 선언한다.
    • 루프를 제어하는 변수는 루프 문 내부에 선언한다.
    • 인스턴스 변수는 클래스 맨 처음에 선언한다.
  • 종속 함수
    • 한 함수가 다른 함수를 호출한다면 두 함수는 세로로 가까이 배치한다.
    • 호출하는 함수를 호출되는 함수보다 먼저 배치한다.
  • 세로 순서
    • 함수 호출 종속성은 아래 방향으로 유지한다.
  • 가로 형식 맞추기
    • 120자 정도로 행길이를 제한한다.
  • 가로 공백과 밀집도
    • 할당 연산자를 강조하기 위해 앞뒤에 공백을 둔다.
    • 함수 이름과 이어지는 괄호 사이에는 공백을 두지 않는다.
    • 연산자 우선순위를 강조하기 위해서도 공백을 사용한다.
  • 가로 정렬
    • 선언문과 할당문을 별도로 정렬하지 않아야 오히려 중대한 결함을 찾기 쉽다.
  • 들여쓰기
    • 메서드는 클래스보다 한 수준 들여쓴다.
    • 메서드 코드는 선언보다 한 수준 들여쓴다.
    • 블록 코드는 블록을 포함하는 코드보다 한 수준 들여쓴다.
    • 간단한 if문, 짧은 while문, 짧은 함수에서도 들여쓰기는 해야한다.
  • 가짜 범위
    • 빈 while문, for문을 피할 수 없을 때는 끝에 ;으로 표시해준다.

팀 규칙

  • 팀에 속한다면 팀규칙을 따라야 한다.

6장. 객체와 자료구조

자료 추상화

  • 구현을 감추려면 추상화가 필요하다.
  • 자료를 세세하게 공개하기 보다는 추상적인 개념으로 표현하는 편이 좋다.
  • 객체는 추상화 뒤로 자료를 숨긴 채 자료를 다루는 함수만 공개한다.
  • 자료구조는 자료를 그대로 공개하며 별다른 함수는 제공하지 않는다.

디미터 법칙

  • 모듈은 자신이 조작하는 객체의 속사정은 몰라야 한다는 법칙
  • 객체는 자료를 숨기고 함수를 공개한다.
  • ex) 클래스 C의 메서드 f는 다음과 같은 객체의 메서드만 호출해야 한다.
    • 클래스 C
    • f가 생성한 객체
    • f인수로 넘어온 객체
    • C 인스턴스 변수에 저장된 객체
  • .로 이어지는 기차충돌 코드는 조잡하므로 피하는 편이 좋다.

자료 전달 객체

  • 자료 구조체를 때로는 자료 전달 객체라고 한다.
  • 공개 변수만 있고 함수는 없는 클래스이다.
  • DB에 저장된 가공되지 않은 정보를 application 코드에서 사용할 객체로 변환하는 단계에서 가장 처음으로 사용하는 구조체이다.

결론

  • 객체는 동작을 공개하고 자료를 숨긴다
    • 따라서 새로운 동작을 추가하는 것이 어렵다.
  • 자료구조는 자료를 노출한다.
    • 따라서 새로운 자료를 추가하기 어렵다.
  • 새로운 자료를 추가해야 한다면 객체지향, 새로운 동작을 추가해야 한다면 절차지향이 더 적합하다.
profile
Backend Developer

0개의 댓글