바위타는 두루미
[CleanCode]3.함수 본문
좋은 함수를 만드는 법
1. 작게만들기
- if/else문 , while문 등에 들어가는 블록은 한줄이여야한다.
- 장점 : 바깥을 감싸는 함수가 작아지고, 함수명이 적절하다면 코드 이해도 쉽다.
2. 한가지만 하기
- 함수가 한가지만 하는지 확인하는 방법
- 추상화 수준이 1개인지
- 의미있는 이름으로 다른함수를 추출할 수 있다면 그것은 여러작업을 하고있다!
- 섹션으로 나뉘어지는지 확인
3. 함수의 추상화 수준은 하나로!
- 이유 : 근본개념인지 세부사항인지 알기 어렵고, 사람들이 세부사항을 점점 더 추가한다.
- 코드는 위에서 아래로 읽히도록, 아래로 갈수록 추상화 수준을 낮추기
4. Switch문
- switch문은 길고, 본질적으로 여러작업을함
- 꼭 써야한다면 추상 factory에 꽁꽁숨겨서 단 한번만 사용하도록
5. 서술적인 이름을 사용하라
- 길어도 겁먹지 말고, 서술적으로 작성
- 일관성있는 서술어를 사용하기
6. 함수 인수
- 이상적인 인수는 0
- 단항형식
- 인수로 질문을 던지는 경우 bool fileExists("MyFile") = > O
- 인수로 인해 상태를 바꾸는 이벤트 => O
- 그외는 가급적 피하기, 특히 void transform(Stringbuffer out) 금지 ! (출력인자를 넘기는것)
- 플레그 인수 -> 끔찍 : 이미 여러가지를 한다는 의미! ( true면 A , False면 B를 한다는 것 )
- 이항 함수
- 자연적인 순서가 있는 경우엔 인정 ex) Point(0,0)
- 그 외에는 혼란을 줄 수 있음
- 삼항 함수
- 마찬가지로, 그만한 가치가 있는 경우엔 인정 ex ) assertEquals (1.0, amount, .001)
- 인수 객체 : 차라리 여러개의 인수가 필요하다면 객체로 넘기는것이 개념을 표현하기 때문에 더 낫다
- 같은 함수명의 다양한 인수를 갖는 여러개의 함수 -> 필요한 경우도 있음 But 3항을 넘기지 말것
- 동사와 키워드 : 동사, 명사를 잘 정하고, 키워드를 추가하여 인수 순서를 기억하지 않아도 되도록 할 수도 있음.
7.부수 효과를 일으키지 마라
- 한가지만 하는것 처럼 보이지만 숨겨진 부수효과를 꼭 체크하기
8.명령과 조회를 분리하라
9.오류코드보다 예외를 사용하라
- 예외를 사용할때 try/catch는 본래 추하기 때문에, 별도의 함수로 뽑아내는 것이 좋다.
- 오류처리할때도 한가지만 작업해야한다. 오류만! 처리하기
- enum으로 error코드를 지정하고 사용하면, 의존성도 높고 새 enum추가시 재컴파일 해야하지만, 예외를 사용하면 새로운 예외는 Exception클레스에서 파생되어서 더 낫다.
10. 반복하지 마라
11. 구조적 프로그래밍
- 구조적 프로그래밍 : 함수내 모든 입구와 출구가 하나여야한다 , loop에서 break, continue사용 X, goto 금지
- 하지만 함수가 작다면 별 이익을 제공하지 못함
그럼 함수를 어떻게 짜야되나요?
- 처음에는 길고 복잡하게 짜고, testcase를 만든 후 점차 다듬기 (testcase는 통과해야함)
'book' 카테고리의 다른 글
[CleanCode]9.단위테스트 (0) | 2022.03.06 |
---|---|
[CleanCode]6.객체와 자료구조 (0) | 2022.03.02 |
[CleanCode] 5. 형식맞추기 (0) | 2022.03.01 |
[CleanCode]4.주석 (0) | 2022.02.24 |
[CleanCode 정리] 2.의미있는 이름 (0) | 2022.02.20 |