바위타는 두루미

[CleanCode]3.함수 본문

book

[CleanCode]3.함수

DoRoMii 2022. 2. 22. 02:15
728x90

좋은 함수를 만드는 법

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
Comments