함수
클린코드를 위한 함수작성 가이드를 스터디 후 기록으로 남깁니다.
0. 나쁜 함수의 예
1. 작게 만들어라
2. 한 가지만 하자
- 함수는 한가지만 하자, 그 한가지만 잘해도 충분하다
- 함수 당 추상화 수준은 하나로
- 함수 내 모든 문장의 추상화 수준이 동일해야 함수가 한 가지 작업만 한다 (줄이 길어지더라도 하려고 하는 목적이 동일해야 추상화 수준이 한개)
- 위에서 아래로 코드 읽기
- 코드는 이야기처럼 읽혀야 제대로된 코드라고 생각하면 됨
3. switch문
- 다형성을 이용해라
- switch문은 작고 한가지 작업만 하도록만들기 어렵다
- 다형성을 이용해서 추상 팩토리에 숨겨 다형성 객체를 사용하는 코드에서 사용하자
4. 함수인수
- 이상적인 인수의 개수는 0개
- 함수에 인수를 1개 전달하는 경우
- 인수에 질문을 던지는 경우
- 인수에 뭔가를 변환해서 결과를 만드는 경우
- 이벤트 함수의 경우
- 플래그 인수
- bool 값을 넘긴다는 것은 함수가 여러가지 일을 처리한다고 공표하는 것
- 플래그 인수를 사용하지 말고 대신 함수를 나누자
- 이항 함수
- 다음과 같은 경우는 이항함수가 절절하지만, 가능하면 단항으로 하자
Point p = new Point(x, y);
- 인수의 객체 활용
- 인수가 2 ~ 3 개라면 객체를 생성해서 인수를 줄이자
- 동사와 키워드
- 단항 함수는 함수와 인수가 동사/명사 쌍을 이루도록 하자
- 함수 이름에 인수 이름을 추가하면 순서를 기억할 필요가 없음 (인수 이름을 제대로 추가하자)
5. 부수 효과를 일으키지 마라
6. 명령과 조회를 분리하라
- 한 함수가 두가지를 하면 혼란을 초래한다
- 명령과 조회는 최대한 분리해서 함수를 만드는 것이 훨씬 효과적이다
7. 오류코드보다 예외를 사용하자
- 메인에서 try{ } catch(Exception e) { } 사용
- 그 이후에는 throws || throw 를 통해서 확인하는 형태로 가는 것이 낫다
8. 오류코드에서 enum 클래스 사용은 경계하자
9. 반복하지마라
- 중복은 모든 악의 근원이다
- depth 를 1개로 제한하면 반복문도 최소화된다
- 자주 사용되는 코드는 메소드로 추출한다