함수는 작게, 최대로 작게!
- 들여쓰기 1 ~ 2단, 중첩 if / while은 최대한 제거하기
함수 하나에 하나의 기능만 넣자.
- 판별: 함수 내에서 다른 함수로 추출이 가능한 코드가 있는가?
코드 아래로 내려갈수록 추상화 수준이 낮아지도록 함수를 배치
switch문 많이 쓰지 않기
서술적인 이름 사용
- 이름으로 기능을 유추하기 쉽도록 (ex. testableHTML -> setupTeatdownIncluder.render)
함수 인수
- 0개가 이상적, 최대 2개, 3개는 지양
- 1개
- 인수에게 질문 던지기 (boolean fileExist("MyFile"))
- 인수를 반환 후 변환하는 함수
- flag 인수
- 제발 하지 마라, True와 False 결과에 해당하는 코드를 두 함수로 쪼개라
- 2개
- 자연적인 순서가 있는 것들(ex. 좌표). 그 외에는 단항 함수로 바꾸도록 노력할 것
- 3개
- 신중히 고려해서 만들 것
- 인수객체
- 인수가 2-3개인 경우 클래스 변수로 선언이 가능한지 체크
- let circle = Circle.makeCircle(x, y, radius) -> Circle.makeCircle(Point(x, y), radius)
코드를 보다가 함수 선언부를 체크하러 이동하지 않아도 되게 함수명과 인자를 명확히 작성
함수 하나에 명령과 조회 둘 중 하나만 하도록 작성
오류 코드 대신 예외처리 (예외 처리도 한가지 작업만 하도록!)
함수를 짤 때 처음에는 대충 짜고 unit test 넣고 함수 쪼개면서 test를 통과하는 지 체크
함수를 짜다보면 이것 저것 다 넣고 싶은 경우가 종종 있었다. 그렇지만 그렇게 짜게 되면 팀원분들이 코드 체크하기도 힘들어지고, 나중에 유지보수 하기에도 좋지 않다는 걸 알기 때문에 최대한 함수를 쪼개서 만들려고 노력한다. 노력한만큼 코드가 깨끗해지고 있는 거겠지..?
'books > clean code' 카테고리의 다른 글
6. 객체와 자료구조 (0) | 2023.12.13 |
---|---|
5. 형식 맞추기 (0) | 2023.12.11 |
4. 주석 (2) | 2023.12.08 |
2. 의미있는 이름 (0) | 2023.12.05 |
1. 깨끗한 코드 (0) | 2023.12.04 |