독서 기록/클린 코드

[클린 코드] 3장 함수

JoJobum 2023. 1. 21.

함수는 프로그램의 가장 기본적인 단위


최대한 작게 만들자!

 

블록과 들여쓰기

if/else 문이나 while문 등에 들어가는 블록은 1줄이어야 한다. 즉 중첩 구조가 생길만큼 함수가 커지면 안된다. 그러므로 들여쓰기 수준도 1단이나 2단을 넘으면 안된다. 그래야 가독성이 좋기 때문이다

 

 

하나의 목표에 집중해라
함수는
한가지를 해야 한다.
그 한가지를 잘해야 한다.
그리고 그 한가지만 해야한다.

 

한 함수내에 추상화 수준이 동일해야 한다

ex) getHtml() 는 추상화 수준이 높다
String pagePathName = PathParser.render(pagepath) 는 추상화 수준이 중간이다. .append("₩n") 같은 코드는 수준이 낮다.
한 함수 안에서 추상화 수준을 섞으면 코드를 읽는 사람이 헷갈린다.

 

함수 인수는 적을 수록 좋다

0개가 가장 이상적
인수는 개념을 이해하기 어렵게 만듦
테스트 관점에서 보면 인수는 더 어려움

 

부수효과를 일으키지 않도록 유의할 것

 

명령과 조회를 분리할 것

 

오류코드 보다 예외를 사용할 것

명령 함수에서 오류 코드를 반환하는 방식은 명령/조회 분리 규칙을 미묘하게 위반
오류 코드를 반환하면 오류코드를 곧바로 처리해야 한다는 문제에 부딪힘

Try/Catch 블록은 코드 구조에 혼란을 일으키고 정상 동작과 오류 처리 동작을 뒤섞기에 별도의 함수로 뽑아내는 편이 좋다

오류 처리도 한가지의 작업이기에 오류 처리하는 함수는 오류만 처리해야 한다.

try로 시작했다면 catch/finally로 끝나야 한다는 말

함수의 내용 중복하지 말 것, 중복은 만악의 근원

 

 

이러한 내용들을 초안에 우겨넣으려는 시도하지 말것

불가능하기에 초안에는 생각을 구현한 코드를 작성한 후 위의 규칙을 지키기 위한 수정을 해나갈 것!



반응형

댓글