티스토리 뷰

책/Clean Code

3장 함수

0307kjb 2021. 12. 2. 17:03

함수의 라인은 최대한 작게만드는 것이다.

블록과 들여쓰기 다시 말해, if문 else문 while문 등에 들어가는 블록은 한 줄이어야 한다는 의미이며 대부분 이곳에서 함수를 호출한다.

바깥을 감싸는 함수가 작아질 뿐만 아니라, 블록 안에서 호출하는 함수 이름을 적절히 짓는다면 코드의 가독성은 좋아진다. 즉 중첩 구조가 생길만큼 함수를 커지게 해서는 안되며 함수에서 들여쓰기 수준은 1,2단을 넘어서면 안 좋다.

 

 

함수는 한가지만 하는 것이 원칙이다.(SRP)

지정된 함수 이름 아래에서 추상화 수준이 하나인 단계만 수행한다면 그 함수는 한 가지 작업만 한다.

함수가 확실히 한 가지 작업만 하려면 함수 내 모든 문장의 추상화 수준이 동일해야 한다.

 

 

코드는 위에서 아래로 이야기처럼 읽혀야 좋다.

한 함수 다음에는 추상화 수준이 한단계 낮은 함수가 온다.

즉 위에서 아래로 프로그램을 읽으면 함수 추상화 수준이 한 번에 한 단계씩 낮아진다. ( 내려가기 + include 규칙 )

 

 

Switch문

직원 유형에 따라 계산을 다르게 하는 switch문 vs 직원의 다형성 swtich을 적용해 유형을 다르게 하여 계산을 하는 방법

상속 관계로 숨긴 후 다른 코드에 비치지 않게 하며 다형성을 적용한다면 SRP, OCP 원칙에 어긋나지 않을 것이다.

 

 

함수 인수

1. 함수 인수의 경우 없을 수록 좋다.

만약 인수를 써야 한다면 단항형식이 좋은데, 이때에서 인수에 질문을 건넨다거나 인수를 뭔가 변환해 결과를 반환하는 경우가 좋다.

예시로) boolean fileExists("myFile") or InputStream fileOpen("myFile") 같은 경우다.

물론 이벤트 형식도 있는데, passwordAttemptFailedNTimes(int attempts)와 같이 프로그램의 함수 호출을 이벤트로 해석해 입력 인수로 시스템 상태를 바꾼다.

위 3경우가 아니라면 단항 인수 함수를 지양하자. (특히 플래그 인수와 출력 인수)

출력 인수를 피할 때는 해당 함수의 객체의 상태(전략)을 변환하도록 유도해야 한다.

그럼에도 불구하고 여러개의 인수를 사용해야 한다면 일부를 독자적인 클래스로 변형하면 좋다. 

 

 

부수적인 효과 기대 x

조건아래에 또다른 조건이 존재하면 부수적인 효과를 일으키는데 이것은 정보의 오류화가 생길 가능성이 높다.

 

 

오류코드보다 예외를!

오류처리도 한가지 작업이니 함수로 만들면 좋다.

 

 

구조적프로그래밍

함수의 입구와 출구는 하나(return)여야 한다. break, continue, goto를 지양하도록 하자.

 

 

' > Clean Code' 카테고리의 다른 글

10장 클래스  (0) 2022.04.09
9장 단위 테스트  (0) 2022.04.06
8장 경계  (0) 2022.04.04
6장 객체와 자료구조  (0) 2022.03.29
2장 의미 있는 이름  (0) 2021.11.28
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함