CleanCode
3장 함수
PUBLY
이용상
목차 1. 길이는 가능한 짧게
2. 한가지만 해라
3. 추상화 수준이 섞이지 않게 해라
4. 스위치문은 한줄로
5. 서술적 이름을 사용하라
6. 함수 인수
7. 명령과 조회를 분리해라
8. 오류코드를 리턴하느니 예외처리로 던져라
1. 함수의
길이는
가능한 짧게
1. 함수의 길이는 가능한 짧게
- 함수를 만드는 첫째 규칙은 ‘작게!’다
- 함수를 만드는 둘째 규칙은 ‘더 작게!'다
- 어느정도?
- 한 화면을 넘기지 말자 (발표자 본인 원래 생각)
- 20줄도 길다 (책에서)
- 켄트 벡이 만들었던 코드 “모든 함수가 2,3,4줄 정도였다” (책에서)
- 블록과 들여쓰기
- if / else / while 문 등에 들어가는 블록은 한 줄이어야 한다
1. 함수의 길이는 가능한 짧게
좋은 예시> 각 조건에 따른 처리 내용을 길게 풀지 않고
간결하게 함수 명으로 무엇을 하는지 알 수 있음
2. 한가지만
해라
2. 한가지만 해라!
- 함수는 한가지를 해야한다. 그 한 가지를잘 해야한다. 그 한 가지만을 해야 한다.
3. 추상화 수준
3. 추상화 수준을 동일하게 유지하라
- 한 함수안에서 낮은 수준과 높은 수준의 추상화가 섞여있으면 가독성이
떨어진다
- 적절한 예시 추가하기
- function onClickSaveButton()
- validateCheck
- parameter 값 검사
- insertToDatabase
- http request
- notificationEvent
- notification-service 호출
4. 스위치문은
한줄로
4. 스위치문은
한줄로
- “1. 가능한 짧게”와 같은 내용
- 스위치문에서 동일한 내용이
반복되는 경우
- 동일 내용을 함수로 묶는 방법
- 추상 팩토리 패턴 사용
- ProjectStateMachine 예시
5. 서술적인
이름을
사용해라!
5. 서술적인 이름을 사용해라!
- 함수가 하는 일을 표현하므로 서술적인 이름을 사용하라
- 이름이 길어도 괜찮다 - 길고 서술적인 이름이 짧고 어려운 이름보다 좋다
- 좋은 IDE는 리팩토링을 잘 지원해주니 이런저런 이름을 넣어보는 방법도 좋다
- 일관된 단어(동사, 명사)를 사용하면 이해하기 좋다
6. 함수 인수
6. 함수 인수
- 없는게 최고
- 단항
- 인수에 질문을 던지는 경우 ex: bool fileExists(filename)
- 인수를 변환해 결과를 반환하는 경우 ex: stream fileOpen(filename)
- 플래그 함수
- bool 값에 의해 두가지를 처리하는 경우
- setVisible(bool)로 두가지를 다 하지 말고 각각 show / hide 함수로 나눠라
- 인수가 많다면
- 인수 객체를 써보자
- makeCircle(float x, float y, float radius) > makeCircle(Point p, float radius)
7. 명령과
조회를
분리하라
7. 명령과 조회를 분리하라
- isHide 와 같은 조회와 setHide 같은 명령은 따로 분리해서 처리할것
- bool hideView(view)
- 원래의도 : view를 숨기고 성공여부를 리턴한다
- 쓰임
- if (hideVIew(view)) { 이후 뷰가 잘 숨겨졌을때 처리할 내용들 }
- 잘못된 해석
- ‘뷰가 hide 된 상태이면 블럭안 코드가 실행되나?’
8. 오류코드
보다
예외처리를
던지자
8. 오류코드 보다 예외처리를 던지자
- 코드가 깔끔해진다 (원 로직과 예외부분이 별도로 분리)
- try_catch 자체가 지저분해 보일 수 있으므로 함수로 분리하는것을 권장

More Related Content

PDF
Java 제어
PPTX
Google c++codingconvention
PPTX
Clean code(03)
PPTX
7.읽기 쉽게 흐름제어 만들기
PPTX
TBB 소개
PPTX
Framer CoffeeScript
PPTX
DDD Start! - 2장 아키텍처 개요
PPTX
PSR - Code Convention
Java 제어
Google c++codingconvention
Clean code(03)
7.읽기 쉽게 흐름제어 만들기
TBB 소개
Framer CoffeeScript
DDD Start! - 2장 아키텍처 개요
PSR - Code Convention

Similar to Clean code 3장-함수 (20)

PPTX
[2012 01 28]cleancode 3장
PDF
클린 코드 part1
PPTX
2015 나는 프로그래머다 컨퍼런스 (11) 염산악 - 가독성에 대하여
PPTX
Load to Clean code
DOCX
The Art Of Readable Code.
DOCX
The art of readable code _ Part I
PPT
간단하게 알아보는 좋은 코드 서영훈
PPTX
깨끗한 코드 (클린 코드, Clean Code)
PPTX
클린코드와 TDD
PPTX
Clean code
PPTX
초보 프로그래머
KEY
Cleancode ch5
PPTX
자바스크립트 함수
PPTX
Processing 기초 이해하기_20160713
PDF
The art of readable code ch4 ch8
PDF
읽기 좋은 코드가 좋은코드다
PDF
외계어 스터디 3/5 function and object
PPTX
Clean code(02)
PPTX
함수형 사고 - Functional thinking
PDF
외계어 스터디 1/5 - Overview
[2012 01 28]cleancode 3장
클린 코드 part1
2015 나는 프로그래머다 컨퍼런스 (11) 염산악 - 가독성에 대하여
Load to Clean code
The Art Of Readable Code.
The art of readable code _ Part I
간단하게 알아보는 좋은 코드 서영훈
깨끗한 코드 (클린 코드, Clean Code)
클린코드와 TDD
Clean code
초보 프로그래머
Cleancode ch5
자바스크립트 함수
Processing 기초 이해하기_20160713
The art of readable code ch4 ch8
읽기 좋은 코드가 좋은코드다
외계어 스터디 3/5 function and object
Clean code(02)
함수형 사고 - Functional thinking
외계어 스터디 1/5 - Overview
Ad

Clean code 3장-함수

  • 2. 목차 1. 길이는 가능한 짧게 2. 한가지만 해라 3. 추상화 수준이 섞이지 않게 해라 4. 스위치문은 한줄로 5. 서술적 이름을 사용하라 6. 함수 인수 7. 명령과 조회를 분리해라 8. 오류코드를 리턴하느니 예외처리로 던져라
  • 4. 1. 함수의 길이는 가능한 짧게 - 함수를 만드는 첫째 규칙은 ‘작게!’다 - 함수를 만드는 둘째 규칙은 ‘더 작게!'다 - 어느정도? - 한 화면을 넘기지 말자 (발표자 본인 원래 생각) - 20줄도 길다 (책에서) - 켄트 벡이 만들었던 코드 “모든 함수가 2,3,4줄 정도였다” (책에서) - 블록과 들여쓰기 - if / else / while 문 등에 들어가는 블록은 한 줄이어야 한다
  • 5. 1. 함수의 길이는 가능한 짧게 좋은 예시> 각 조건에 따른 처리 내용을 길게 풀지 않고 간결하게 함수 명으로 무엇을 하는지 알 수 있음
  • 7. 2. 한가지만 해라! - 함수는 한가지를 해야한다. 그 한 가지를잘 해야한다. 그 한 가지만을 해야 한다.
  • 9. 3. 추상화 수준을 동일하게 유지하라 - 한 함수안에서 낮은 수준과 높은 수준의 추상화가 섞여있으면 가독성이 떨어진다 - 적절한 예시 추가하기 - function onClickSaveButton() - validateCheck - parameter 값 검사 - insertToDatabase - http request - notificationEvent - notification-service 호출
  • 11. 4. 스위치문은 한줄로 - “1. 가능한 짧게”와 같은 내용 - 스위치문에서 동일한 내용이 반복되는 경우 - 동일 내용을 함수로 묶는 방법 - 추상 팩토리 패턴 사용 - ProjectStateMachine 예시
  • 13. 5. 서술적인 이름을 사용해라! - 함수가 하는 일을 표현하므로 서술적인 이름을 사용하라 - 이름이 길어도 괜찮다 - 길고 서술적인 이름이 짧고 어려운 이름보다 좋다 - 좋은 IDE는 리팩토링을 잘 지원해주니 이런저런 이름을 넣어보는 방법도 좋다 - 일관된 단어(동사, 명사)를 사용하면 이해하기 좋다
  • 15. 6. 함수 인수 - 없는게 최고 - 단항 - 인수에 질문을 던지는 경우 ex: bool fileExists(filename) - 인수를 변환해 결과를 반환하는 경우 ex: stream fileOpen(filename) - 플래그 함수 - bool 값에 의해 두가지를 처리하는 경우 - setVisible(bool)로 두가지를 다 하지 말고 각각 show / hide 함수로 나눠라 - 인수가 많다면 - 인수 객체를 써보자 - makeCircle(float x, float y, float radius) > makeCircle(Point p, float radius)
  • 17. 7. 명령과 조회를 분리하라 - isHide 와 같은 조회와 setHide 같은 명령은 따로 분리해서 처리할것 - bool hideView(view) - 원래의도 : view를 숨기고 성공여부를 리턴한다 - 쓰임 - if (hideVIew(view)) { 이후 뷰가 잘 숨겨졌을때 처리할 내용들 } - 잘못된 해석 - ‘뷰가 hide 된 상태이면 블럭안 코드가 실행되나?’
  • 19. 8. 오류코드 보다 예외처리를 던지자 - 코드가 깔끔해진다 (원 로직과 예외부분이 별도로 분리) - try_catch 자체가 지저분해 보일 수 있으므로 함수로 분리하는것을 권장