본문 바로가기
공부/스터디

[클린 코드] 1주차: 3장

by nahowo 2025. 5. 10.

정리

작게 만들기

  • 조건문/반복문 등에 들어가는 코드는 짧아야 함 → 즉 이 곳에서 다른 함수 호출 → 결과적으로 바깥을 감싸는 함수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