[클린코드] 5. 형식 맞추기

딱이·2022년 7월 5일
0

CleanCode 스터디

목록 보기
5/13

TIL (Today I Learned)

2022.05.09

오늘 읽은 범위

5장. 형식 맞추기


📖 책에서 기억하고 싶은 내용을 써보세요.

서론

  • 코드 형식을 맞추기 위한 간단한 규칙을 정하고따라야 한다
  • 팀 이 합의해 규칙을 정하고 모두가 그 규칙을 따라야 한다
  • 필요하다면 규칙을 자동으로 적용하는 도구를 활용한다.

형식을 맞추는 목적

융통성 없이 맹목적으로 따르면 안됨.
코드 형식 === 의사소통의 일환
의사소통은 전문 개발자의 일차적인 의무.

코드가 바뀌어도 맨 처음 잡아놓은 구현 스타일과 가독성 수준은
유지보수 용이성과 확장성에 계속 영향을 미친다.

aka. 코드는 사라질지라도 개발자의 스타일과 규율은 사라지지 않는다

적절한 행 길이를 유지하라
큰 파일보다 작은 파일이 이해하기 쉽다.

신문 기사처럼 작성하라
위에서 아래로
1. 최상 단에 기사를 몇 마디로 요약하는 표제
2. 첫 문단은 전체 기사 내용을 요약
3. 쭉 읽으며 내려가면 세세한 사실이 조금씩 드러남.

코드에 반영하면
이름은 간단하면서도 설명이 가능하게 짓는다.
이름만 보고도 올바른 모듈을 살펴보고 있는지 아닌지를 판단 가능해야 함.

1. 파일 첫 부분은 고차원 개념과 알고리즘을 설명
2. 아래로 내려갈수록 의도를 세세하게 묘사
3. 마지막에는 가장 저차원 함수와 세부 내역이 나온다.

개념은 빈 행으로 분리
일련의 행 묶음은 완결된 생각 하나를 표현한다.
생각 사이는 빈 행을 넣어 분리.
빈 행은 새로운 개념을 시작한다는 시각적 단서 → 가독성 good

세로 밀집도
줄바꿈 = 분리
세로 밀집도 = 연관성

수직 거리
서로 밀접한 개념은 세로로 가까이 둬야 한다. (protected 변수를 피해야 하는 이유)

연관성이란,
: 한 개념을 이해하는 데 다른 개념이 중요한 정도.
연관성이 깊은 개념이 멀리 떨어져 있으면 코드를 읽는 사람이 소스 파일과 클래스 를 여기저기 뒤지게 된다.
👉 어디에 있는지 찾고 기억 → 시간과 노력이 소모됨.

변수 선언

  • 변수는 사용하는 위치에 최대한 가까이 선언
  • 지역 변수는 각 함수 맨 처음에 선언
  • 루프를 제어하는 변수는 흔히 루프 문 내부에 선언
  • 다소 긴 함수에서 블록 상단이나 루프 직전에 변수를 선언
  • 인스턴스 변수클래스 맨 처음에 선언
  • 코드 읽다가 중간에 변수 발견하는 일은 없어야 함.

종속 함수
한 함수가 다른 함수를 호출 → 두 함수는 세로로 가까이 배치.
규칙 일관적으로 적용 시, 코드를 읽는사람이 방금 호출한 함수, 뒤에서 정의되리라는 사실을 예측.

🔎 효과

  • 호출되는 함수를 찾기가 쉬움.
  • 모듈 전체의 가독성도 높아진다.

개념적 유사성
개념적인 친화도가 높을수록 코드를 가까이 배치.

📌 Ex.

  • 한 함수가 다른 함수를 호출해 생기는 직접적인 종속성
  • 비슷한 동작을 수행
  • 명명법이 똑같고 기본 기능이 유사

세로 순서
호출되는 함수 먼저 배치 & 호출하는 함수 나중 배치
⇒ 소스 코드 모듈이 고차원 에서 저차원으로 자연스럽게 내려감.

가로 형식 맞추기

1. 가로 정렬
정렬이 필요할 정도로 목록이 길다? → 목록 길이가 문제.
선언부가 너무 길면, 클래스를 쪼개야 함.

2. 들여쓰기
범위(scope)로 이뤄진 계층을 표현하기 위함.
코드가 속해있는 범위를 시각적으로 표현.
계층에서 각 수준은 이름을 선언하는 범위이자 선언문과 실행문을 해석하는 범위

🔎 범위 Example

  • 파일 전체에 적용
  • 파일 내 개별 클래스에 적용
  • 클래스 내 각 메서드에 적용
  • 블록 내 블록에 재귀적으로 적용

팀규칙
1. 팀과 마주 앉아 구현 스타일을 논의.
2. 어디에 괄호를 넣을지, 들여쓰기는 몇 자 로 할지, 클래스와 변수와 메서드 이름은 어떻게 지을지 등을 결정.
3. 정한 규칙으로 IDE 코드 형식기를 설정한 후 지금까지 사용


🐱‍👓 오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요

👆 책에서는 신문기사로 예시를 들어 줬지만, 소설이든 에세이든, 잘쓰여진 글은 쉽게 읽히는 글이라고들 한다. (공감하는 바)
잘 짜여진 코드는 줄 글읽듯 서사에 맞게 아래로 쭉읽혀야 하며, 사용된 변수는 곧 뒤에 나올거라는 신뢰관계가 있어야 한다 는 이야기가 참 재미 있었다.

✌ 프로그래밍도 컴퓨터랑 나, 그리고 나와 다른 개발자들이 소통하는 언어인 만큼 사회적인 작업이라 생각이 된다. 우리가 얼린 물을 '삼다수바'라 하지않고 '얼음'이라고 부르는 것처럼 팀원들과의 사회적 약속을 잘 지키는 프로그래밍을 하자-!


🧐 궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.

profile
뚝딱뚝딱 FE

0개의 댓글