5. 형식 맞추기

소울치킨·2022년 5월 2일
0

클린코드

목록 보기
6/9
post-thumbnail

형식(엄청 중요)을 맞추는 목적

  • 의사소통의 일환.
  • 버전이 올라가면서 코드는 바뀐다. 코드의 가독성은 앞으로 바뀔 코드의 품질에 지대한 영향을 끼친다
  • 시간이 지나도 맨 처음 잡아놓은 구현 스타일과 가독성 수준은 유지보수 용이성확장성에 계속적으로 영향을 미친다.

적절한 행 길이

  • 세로 길이. 코드의 길이(파일의 길이).
  • (가이드 라인) 500줄을 넘지말고 200줄 정도인 파일로도 커다란 시스템을 구축할 수 있다. 엄격한 규칙은 아니고 바람직한 규칙
  • 작은 파일이 이해하기 좋다

신문 기사처럼 작성하라

  • 위에서 아래로 읽히게 작성하기.
  • 기사에서는 표제를 보고 첫 문단은 요약으로 큰 그림을 보여준다. 아래는 세세한 그림, 디테일을 보여준다.
  • 대다수의 기사는 짧다.

개념은 빈 행으로 분리

  • 일련된 행의 묶음은 완결된 생각 하나, 한 덩어리를 표현한다.
  • 패키지 선언, import, 함수 사이사이에 존재하는 빈 행은 시각적 단서다.

세로 밀집도

  • 줄바꿈이 개념을 분리한다면 세로 밀집도는 연관성을 의미한다.

수직 거리

  • 같은 파일에 있다면 서로 밀접한 개념은 세로로 가까이 둬야한다. 세로 거리는 연관성을 표현한다.
  • 이 조각 저 조각이 어디있는지 찾는데 시간을 낭비하지 않도록 해야한다.
  • 위에서 아래로 추상적에서 구체적으로 흐른다.

변수 선언

  • 변수는 사용하는 위치에 최대한 가깝게 선언한다.
  • 인스턴스 변수는 클래스 맨 처음에 선언한다. 변수 간에 세로로 거리를 두지 않는다.
  • 종속 함수 한 함수가 다른 함수를 호출한다면, 세로로 가까이. 먼저 호출되는 함수가 앞이 되도록 한다.

개념적 유사성에 맞게 배치한다. 개념적인 친화도가 높아 서로를 끌어당긴다면 가까이 배치한다.

  • 한 함수가 다른 함수를 호출해 생기는 직접적 종속성
  • 변수와 그 변수를 사용하는 함수
  • 비슷한 동작을 수행하는 일군의 함수 (명명법이 똑같고 기본 기능이 유사하고 간단하다.

가로 형식 맞추기

  • 통계적으로 행 수는 80자 이후로 급격히 감소한다. 100자 120자도 상관없지만 120자를 넘어가지 않기를 권장.
  • 옛날에는 오른쪽으로 스크롤할 필요가 절대로 없게 코드를 짰지만 요즘엔 모니터가 크다.

가로 공백 밀집도

  • 가로는 공백을 사용해 밀접한 개념과 느슨한 개념을 표현한다.
  • 함수명과 이어지는 괄호 사이에는 공백을 넣지 않는다. 공백을 넣으면 한 개념으로 안 읽힌다.
  • 괄호 안에서는 인수마다 콤마와 공백으로 구분한다. 인수가 별개라는 사실을 인지하게 해준다.
  • 연산자 우선순위에 따라 공백을 넣기도 하고 빼기도 한다. b*b - 4*a*c 처럼 잘 읽히게 한다.

가로 정렬

  • 아래와 같은 사례를 가로 정렬이라고 하는데, 오히려 더 피로하다. 가로 정렬을 안해서 복잡하게 느껴진다면 클래스를 분리하라는 신호다.
{
    this.context =      context;
    socket =            s;
    input =             s.getInputStream();
}

들여쓰기

  • 프로그래머는 들여쓰기 체계에 크게 의존한다.
  • 왼쪽으로 코드를 맞춰 코드가 속하는 범위를 시각적으로 표현한다.
  • 들여쓰기로 if / while 문 코드의 경게를 하나하나 찾을 필요가 없어지고, 새 메서드, 새 변수, 새 클래스 찾기가 쉬워진다.
  • (중요) if / while / 짧은 함수는 들여쓰기 규칙을 무시하고 뭉뚱그려 적고 싶어진다. 가독성을 해친다.

팀 규칙

  • 팀은 한 가지 규칙에 합의해야하고 팀원은 규칙을 따라야한다. 그래야만 소프트웨어가 일관적인 스타일로 보인다.
  • 팀이 정해지면 스타일을 논의해야한다. 어디에 괄호를 넣을 지, 들여쓰기는 몇 자로, 클래스 변수 메서드 이름 규칙 등등
profile
소울치킨입니다

0개의 댓글