5장. 형식 맞추기

공부하는 감자·2024년 2월 8일
0

클린코드

목록 보기
5/18

이 글에서 분류한 기준은 책의 내용을 바탕으로 주관적인 견해로 재정리해본 것입니다.

형식을 맞추는 목적

  • 코드 형식은 의사소통의 일환이다.
  • 맨 처음 잡아 놓은 구현 스타일과 가독성 수준은 유지보수 용이성과 확장성에 계속 영향을 미친다.
  • 따라서 코드 형식을 맞추기 위한 간단한 규칙을 정하고 그 규칙을 따라야 한다.

코드 형식

적절한 행의 길이를 유지

  • 자바에서 파일 크기는 클래스 크기와 밀접하다.
  • 클래스 크기는 클래스를 논하는 장에서 다루고, 이 장에서는 파일 크기를 고려한다.
  • 약 200줄 정도인 파일로도 커다란 시스템을 구축할 수 있다.
    • 일반적으로 큰 파일보다 작은 파일이 이해하기 쉽다.

소스 파일의 구성

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

코드 형식: 세로

세로 밀집도

  • 개념은 빈 행(줄바꿈)으로 분리한다.
    • 각 행은 수식이나 절을 나타내고, 일련의 행 묶음은 완결된 생각 하나를 표현한다.
    • 따라서, 생각(개념) 사이는 빈 행을 넣어 분리해야 한다.
  • 서로 밀접한 코드 행은 세로로 가까이 놓여야 한다.
    • 세로 밀집도는 연관성을 의미한다.
    • ex) 변수를 상단에 함께 둔다.
  • 서로 밀접한 개념은 세로로 가까이 둬야 한다.
    • 서로 밀접한 개념은 한 파일에 속해야 하고, 세로 거리로 연관성을 표현한다.
    • 연관성이란 한 개념을 이해하는 데 다른 개념이 중요한 정도다.

변수

  • 변수는 사용하는 위치에 최대한 가까이 선언한다.
    • 지역 변수는 각 함수 맨 처음에 선언
    • 루프를 제어하는 변수는 루프 문 내부에 선언
    • 인스턴스 변수는 클래스 맨 처음에 선언

함수

  • 한 함수가 다른 함수를 호출한다면 두 함수는 세로로 가까이 배치한다.
  • 일반적으로 함수 호출 종속성은 아래 방향으로 유지한다.
    • 호출하는 함수는 호출되는 함수보다 먼저 배치한다.
  • 개념적으로 유사성(친화도)가 높으면 가까이 배치한다.
    • ex) 한 함수가 다른 함수를 호출해 생기는 직접적인 종속성
    • ex) 비슷한 동작을 수행하는 일군의 함수

코드 형식: 가로

가로 길이

  • 짧은 행이 바람직하다.
    • 책의 저자는 120자 정도로 행 길이를 제한했다.

가로 공백과 밀집도

  • 가로는 공백을 사용해 밀접한 개념과 느슨한 개념을 표현한다.
    • ex) 할당 연산자를 강조하기 위해 앞뒤에 공백을 주는 경우
    • ex) 연산자 우선순위를 강조하기 위해 공백을 주는 경우

가로 정렬

  • 가로 정렬은 사용하지 말자.
  • 코드가 엉뚱한 부분을 강조해 진짜 의도가 가려진다.
    • ex) 공백을 주어 선언문과 할당문을 별도로 정렬하는 경우
  • 정렬이 필요할 정도로 목록이 길다면 문제는 목록의 길이이다.
    • 선언부가 길다면 클래스를 쪼개야 한다는 의미이다.

들여쓰기

  • 소스 파일은 윤곽도(outline)와 계층이 비슷하다.
    • 파일 전체에 적용되는 정보가 있고
    • 파일 내 개별 클래스에 적용되는 정보가 있고
    • 클래스 내 각 메서드에 적용되는 정보가 있고
    • 블록 내 블록에 재귀적으로 적용되는 정보가 있다.
  • 계측에서 각 수준은 이름을 선언하는 범위이자 선언문과 실행문을 해석하는 범위다.
  • 범위(scope)로 이뤄진 계층을 표현하기 위해 코드를 들여쓴다.
  • 들여쓰는 정도는 계층에서 코드가 자리잡은 수준에 비례한다.
  • 클래스 정의처럼 파일 수준은 문장은 들여쓰지 않는다.
  • 클래스 내 메서드는 클래스보다 한 수준 들여쓴다.
  • 메서드 코드는 메서드 선언보다 한 수준 들여쓴다.
  • 블록 코드는 블록을 포함하는 코드보다 한 수준 들여쓴다.
  • 간단한 if 문, 짧은 while 문 등 짧은 함수에서 들여쓰기 규칙을 무시해서는 안 된다.
  • 빈 while문이나 for문은 새 행에 들여쓰기 하여 세미콜론(;)을 넣어준다.

팀 규칙

  • 팀은 한 가지 규칙에 합의해야 한다.
  • 모든 팀원은 팀 규칙을 따라야 한다.
    • 소프트웨어가 일관적인 스타일을 보인다.

Reference

참고 서적

📔 Clean Code

profile
책을 읽거나 강의를 들으며 공부한 내용을 정리합니다. 가끔 개발하는데 있었던 이슈도 올립니다.

0개의 댓글