Book Record/Clean Code

[Clean Code] 5장 형식 맞추기

lakelight 2022. 10. 6. 21:09
728x90
반응형
깨끗한 코드를 작성하기 위한 다섯번째 기록

형식을 맞추는 목적

코드 형식은 중요하다! 너무 중요해서 무시하기 어렵다. 코드형식은 의사소통의 일환이다.

오늘 구현한 기능이 다음 버전에서 바뀔 확률은 아주 높다. 하지만 오늘 구현한 코드의 가독성은 앞으로 바뀔 코드의 품질에 지대한 영향을 미친다. 가독성 수준은 유지보수 용이성확장성에 계속 영향을 미친다.

 

적절한 행 길이를 유지하라

다양한 프로젝트를 본 결과, 500줄이 넘지 않고, 대부분 200줄 정도인 파일로도 커다란 시스템구축할 수 있다는 사실! 반드시 지킬 엄격한 규칙은 아니지만 바람직한 규칙으로 삼으면 좋다. 일반적으로 큰 파일보다 작은 파일이 이해하기 쉽다.

 

신문 기사처럼 작성하라

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

 

개념은 빈 행으로 분리하라

각 행은 수식이나 절을 나타내고, 일련의 행 묶음은 완결된 생각 하나를 표현한다. 생각 사이는 빈 행을 넣어 분리해야한다. 예를 들면 패키지 선언부, import 문, 각 함수 사이에 빈 행이 들어간다.

 

세로 밀집도

연관성의미하는 것으로, 즉, 서로 밀접한 코드 행은 세로로 가까이 놓여야 한다는 뜻이다. 의미 없는 주석으로 연관된 코드를 떨어뜨려 놓지 말자.

 

수직 거리

서로 밀접한 개념은 세로로 가까이 둬야 한다. 두 밀접한 개념이 다른 파일에 존재해야 하는 타당한 근거가 없다면 두 개념을 같은 파일에 속해야 한다. 같은 파일에 속할 정도로 밀접한 두 개념은 세로 거리연관성표현한다.

 

변수 선언

사용하는 위치에 최대한 가까이 선언하는 것이 좋다. 그리고 루프를 제어하는 변수는 루프 문 내부에 선언할 수 있다.
ex ) for (int num : numList) { } 

 

인스턴스 변수

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

 

종속 함수

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

 

개념적 유사성

개념적인 친화도가 높은 코드는 가까이 배치한다. 한 함수가 다른 함수를 호출하거나, 변수와 그 변수를 사용하는 함수 관계 등이 있다.

 

세로 순서

함수 호출 종속성은 아래 방향으로 유지한다. 즉, 호출되는 함수를 호출하는 함수보다 나중에 배치한다. 그렇게 되면 소스 코드 모듈이 고차원에서 저차원으로 자연스럽게 내려간다. 위에서 배웠던 개념과 같이 신문 기사처럼 가장 중요한 개념가장 먼저 표현하고 세세한 사항은 최대한 배제하고 마지막에 표현한다. 이렇게 되면 소스 파일에서 첫 함수 몇개만 읽어도 개념을 파악하기 쉬워진다.

 

가로 형식 맞추기

원래는 80자 정도로 제한했지만 요즘은 모니터가 커졌기 때문에 그렇게 하지 않고, 저자가 말하길 120자 정도가 적당하다고 생각한다.

 

가로 공백과 밀집도

연산자를 사용할 때는 잘 보이도록 하고, 강조하기 위해 앞뒤로 공백을 준다. a+b=c -> a + b = c (권장)

 

들여쓰기

들여쓰기 한 파일은 구조가 한눈에 들어온다. 

 

팀 규칙

  1. 어디에 괄호를 넣을지.
  2. 들여쓰기는 몇 자로 할지.
  3. 클래스와 변수와 메서드 이름은 어떻게 지을지.

-> IDE 코드 형식기를 설정한 후 사용하면 좋다.

 

 

마무리

저는 현재 회사에서 프로젝트를 진행하고 있는데,
팀에 정해진 규칙이 없습니다. 이 책을 읽고 팀장님께 말씀드려봐야겠습니다.

오늘도 좋은 글을 읽고 많은 배움을 얻었습니다. 

 

 

[출처]
Clean Code (클린 코드,애자일 소프트웨어 장인 정신), 로버트 C. 마틴 저

728x90
반응형

'Book Record > Clean Code' 카테고리의 다른 글

[Clean Code] 7장 오류 처리  (0) 2022.10.20
[Clean Code] 6장 객체와 자료 구조  (2) 2022.10.07
[Clean Code] 4장 주석  (0) 2022.09.27
[Clean Code] 3장 함수  (2) 2022.09.27
[Clean Code] 2장 의미있는 이름  (0) 2022.09.26