[클린코드] 형식맞추기

skayjays·2022년 1월 23일
0

클린코드

목록 보기
3/5

형식맞추는 목적

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

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

적절한 행 길이를 유지하라

  • 200줄 미만으로 작성하라
  • 큰파일 보다는 작은 파일이 이해하기 쉽다.

신문 기사처럼 작성하라

  • 이름은 간단하면서도 설명이 가능하게 짓는다.
  • 이름만 보고도 올바른 모듈을 살펴보고 있는지 아닌지를 판단할 정도로 신경 써서 짓는다.
  • 소스파일 첫 부분은 고차원 개념과 알고리즘을 설명한다.
  • 아래로 내려갈 수록 의도를 세세하게 묘사한다.
  • 마지막에 가장 저차원 함수와 세부 내역이 나온다.

개념은 빈 행으로 분리하라

  • 모든 코드는 왼쪽에서 오른쪽으로 그리고 위에서 아래로 읽힌다.
  • 각행은 수식이나 절을 나타내고, 일련의 행 묶음은 완결된 생각 하나를 표현한다.

세로 밀집도

  • 세로밀집도는 연관성을 의미한다.
  • 서로 밀집한 코드 행은 가까이 놓여야 한다는 뜻이다.

수직거리

  • 서로 밀접한 개념은 세로로 가까이 둬야한다.
  • 서로 밀접한 개념은 한파일에 속해야 한다.
  • protected 변수는 피한다.
  • 연관성이란 한개념을 이해하는데 다른 개념이 중요한 정도다.

변수 선언

  • 변수는 사용하는 위치에 최대한 가까이 선언한다.
  • 루프를 제어하는 변수는 흔히 루프 문 내부에 선언한다.

인스턴스 변수

  • 인스턴스 변수는 클래스 맨처음에 선언한다.
  • 변수간에 세로로 거리를 두지않는다.
  • 잘설계한 클래스는 많은 클래스 메서드가 인스턴스 변수를 사용하기 때문이다.

종속 함수

  • 한 함수가 다른 함수를 호출한다면 두 함수는 세로로 가까이 배치한다.
  • 호출 하는 함수를 호출되는 함수보다 먼저 배치한다.

개념적 유사성

  • 개념적인 친화도가 높은 함수는 가까이 배치한다.
  • 친화도가 높은 경우
    • 종속함수
    • 변수와 그 변수를 사용하는 함수
    • 비슷한 동작을 수행하는 일군의 함수

세로 순서

  • 함수호출 종속성은 아래 방향으로 유지한다.

가로 형식 맞추기

  • 100~120자 이내로 작성한다.

가로 정렬

  • 선언부가 길다면 클래스를 쪼개야 한다. 너무많은 책임을 가지고 있을 확률이 높다.

들여쓰기

  • 소스파일은 윤곽도와 비슷하다
  • 들여쓰기한 파일은 코드구조가 한눈에 들어온다.
  • 1줄로 가능한 if/while문등으로 인해 들여쓰기를 무시하고 싶은 유혹이 생기지만 이런 유혹은 피한다.

팀 규칙

  • 팀은 한가지 규칙에 합의 해야한다.
  • 개개인이 따로국밥처럼 맘대로 짜대는 코드는 피해야 한다.
  • 좋은 소프트웨어 시스템은 읽기 쉬운 문서로 이뤄진다는 사실을 기억하자.
  • 한 소스 파일에서 봤던 형식이 다른 소스파일에도 쓰이리라는 신뢰감을 독자에게 줘야 한다.

정리

이번 장에서는 형식 맞추기를 정리했다. 처음에 읽을 때는 너무 당연한 거 아닌가? 하면서 읽었지만 정리하면서 하나하나 자세히 읽다 보니 오히려 사소하고 당연하게 생각했던 것들이 잘 지켜지지 않고 있었다는 생각을 많이 했다. 막상 프로젝트 초기에는 이런 내용이 하나하나 잘 지켜지면서 만들어나가지만 시간이 지날수록 코드는 계속 변형되고 유지보수 되면서 다양한 스타일이 생기게 된다. 그래서 나중에 프로젝트가 발전함에 따라 일관되지 않은 모습의 코드로 남아 있는 경험을 많이 했던 것 같다. 그러므로 프로젝트의 생명주기는 정확하게 판단하기 어려우므로 항상 코드 작성의 일관성을 가지려고 노력해야겠다.

profile
기초를 탄탄하게

0개의 댓글