TIL (Today I Learned)
2022.05.09
오늘 읽은 범위
5장. 형식 맞추기
서론
형식을 맞추는 목적
융통성 없이 맹목적으로 따르면 안됨.
코드 형식 === 의사소통의 일환
의사소통은 전문 개발자의 일차적인 의무.코드가 바뀌어도 맨 처음 잡아놓은 구현 스타일과 가독성 수준은
유지보수 용이성과 확장성에 계속 영향을 미친다.aka. 코드는 사라질지라도 개발자의 스타일과 규율은 사라지지 않는다
적절한 행 길이를 유지하라
큰 파일보다 작은 파일이 이해하기 쉽다.
개념은 빈 행으로 분리
일련의 행 묶음은 완결된 생각 하나를 표현한다.
생각 사이는 빈 행을 넣어 분리.
빈 행은 새로운 개념을 시작한다는 시각적 단서 → 가독성 good
세로 밀집도
줄바꿈 = 분리
세로 밀집도 = 연관성
수직 거리
서로 밀접한 개념은 세로로 가까이 둬야 한다. (protected 변수를 피해야 하는 이유)
연관성이란,
: 한 개념을 이해하는 데 다른 개념이 중요한 정도.
연관성이 깊은 개념이 멀리 떨어져 있으면 코드를 읽는 사람이 소스 파일과 클래스 를 여기저기 뒤지게 된다.
👉 어디에 있는지 찾고 기억 → 시간과 노력이 소모됨.
변수 선언
종속 함수
한 함수가 다른 함수를 호출 → 두 함수는 세로로 가까이 배치.
규칙 일관적으로 적용 시, 코드를 읽는사람이 방금 호출한 함수, 뒤에서 정의되리라는 사실을 예측.
🔎 효과
- 호출되는 함수를 찾기가 쉬움.
- 모듈 전체의 가독성도 높아진다.
개념적 유사성
개념적인 친화도가 높을수록 코드를 가까이 배치.
📌 Ex.
- 한 함수가 다른 함수를 호출해 생기는 직접적인 종속성
- 비슷한 동작을 수행
- 명명법이 똑같고 기본 기능이 유사
세로 순서
호출되는 함수 먼저 배치 & 호출하는 함수 나중 배치
⇒ 소스 코드 모듈이 고차원 에서 저차원으로 자연스럽게 내려감.
1. 가로 정렬
정렬이 필요할 정도로 목록이 길다? → 목록 길이가 문제.
선언부가 너무 길면, 클래스를 쪼개야 함.
2. 들여쓰기
범위(scope)로 이뤄진 계층을 표현하기 위함.
코드가 속해있는 범위를 시각적으로 표현.
계층에서 각 수준은 이름을 선언하는 범위이자 선언문과 실행문을 해석하는 범위
🔎 범위 Example
- 파일 전체에 적용
- 파일 내 개별 클래스에 적용
- 클래스 내 각 메서드에 적용
- 블록 내 블록에 재귀적으로 적용
팀규칙
1. 팀과 마주 앉아 구현 스타일을 논의.
2. 어디에 괄호를 넣을지, 들여쓰기는 몇 자 로 할지, 클래스와 변수와 메서드 이름은 어떻게 지을지 등을 결정.
3. 정한 규칙으로 IDE 코드 형식기를 설정한 후 지금까지 사용
👆 책에서는 신문기사로 예시를 들어 줬지만, 소설이든 에세이든, 잘쓰여진 글은 쉽게 읽히는 글이라고들 한다. (공감하는 바)
잘 짜여진 코드는 줄 글읽듯 서사에 맞게 아래로 쭉읽혀야 하며, 사용된 변수는 곧 뒤에 나올거라는 신뢰관계가 있어야 한다 는 이야기가 참 재미 있었다.
✌ 프로그래밍도 컴퓨터랑 나, 그리고 나와 다른 개발자들이 소통하는 언어인 만큼 사회적인 작업이라 생각이 된다. 우리가 얼린 물을 '삼다수바'라 하지않고 '얼음'이라고 부르는 것처럼 팀원들과의 사회적 약속을 잘 지키는 프로그래밍을 하자-!