정리
작게 만들기
- 조건문/반복문 등에 들어가는 코드는 짧아야 함 → 즉 이 곳에서 다른 함수 호출 → 결과적으로 바깥을 감싸는 함수enclosing function가 작아짐, 가독성 증가
한 가지만 하기
함수는 한 가지를 해야 한다. 그 한 가지를 잘 해야 한다. 그 한 가지만을 해야 한다.
- 추상화 수준이란?
- 객체나 메서드가 얼마나 일반적이거나 구체적인지를 나타내는 정도
- 인수와 함수 이름 사이 추상화 수준도 신경쓰기
- 함수 내 모든 문장의 추상화 수준을 동일하게 유지
- 함수가 한 가지만 하도록 하려면?
- 의미 있는 이름으로 다른 함수를 추출할 수 있는지 확인
내려가기 규칙
코드는 위에서 아래로 이야기처럼 읽혀야 좋다.
- 추상화 수준이 점점 낮아지도록 배치하기
서술적인 이름 사용하기
길고 서술적인 이름이 짧고 어려운 이름보다 좋다.
- 쉽게 읽히는 여러 단어를 사용해 함수 기능을 잘 표현하는 이름 선택
함수 인수
- 플래그 인수 → 함수가 한 번에 여러 가지를 처리한다는 의미
- 입력 인수 → 함수 → 반환 결과 반환: 입력 인수를 그대로 반환하는 함수더라도 이 형식을 유지하는 게 좋음
- 인수를 줄이기 위해 객체를 생성 → 개념적으로 변수를 묶을 수 있음
읽은 소감
- 자주 사용하던 방식이 보여서 반성하게 됨(단순한 변수명, 플래그 인수, 여러 개의 매개변수 등)
intelliJ에서 내려가기 규칙 적용하기
- 마지막 3-7 코드를 읽었을 때 정말 잘 읽힌다는 생각을 함
- 일반적인 독서와 비슷한 흐름
- 내려가기 규칙: intelliJ 메서드 순서 rearrange 설정
- setting > Editor > Code Style > Java > Arrangement에서 Grouping rules에 keep dependent methods together 체크, 설정은 breadth-first
- 이 방식을 사용하면 전체 코드에서 Code > rearrange를 적용했을 때 BF 방식으로 정렬되어서 본인이 호출하는 함수를 찾기 힘듦(책 3-7 방식으로 정렬이 안 됨)
- 그렇다고 DF(depth-first) 방식을 사용하면 메인 함수에서 호출하는 역순으로 정렬이 됨
- 즉 책 방식으로 정렬하기 위해서는 전체 코드를 정렬한 뒤 메인 메서드(enclosing method)를 제외한 모든 함수를 선택해서 다시 정렬해야 올바르게 정렬됨
리팩토링 적용하기
- 예전에 했던 프로젝트 코드에 배웠던 내용을 적용해서 리팩토링을 진행
- 메서드를 잘게 나누는 과정에서 메서드명 정하는 것이 힘들었음
- 조회-명령 분리를 위해 성능을 조금 포기하는 부분이 있었는데 이 부분은 조금 더 생각을 해 봐야 할 것 같음
'공부 > 스터디' 카테고리의 다른 글
| [클린 코드] 5주차: 11, 13장 (2) | 2025.06.06 |
|---|---|
| [클린 코드] 4주차: 9, 10장 (0) | 2025.05.29 |
| [클린 코드] 3주차: 7, 8장 (0) | 2025.05.29 |
| [클린 코드] 2주차: 5, 6장 (1) | 2025.05.16 |