일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 페이스북
- 클린코드
- 리팩토링
- Security
- 스프링부트
- JWT
- spring boot
- gdg
- GC
- 스프링 부트
- RabbitMQ
- Spring
- tomcat
- 스프링
- clean code
- Producer
- apache
- JPA
- 권한
- java
- oauth2
- load balancing
- 비동기
- Refactoring
- OAuth
- 시큐리티
- assertj
- g1
- jvm
- 페이징
Archives
- Today
- Total
허원철의 개발 블로그
클린 코드 (2) 본문
이번 글은 '클린 코드 시작하기'에 이은 글입니다.
의미 있는 이름 짓기
1) 이름을 명명할 때 명확하게 의도가 드러나도록 합니다.
ex) 학생 이름
1 2 | String studentName; ------------------- (O) String nm; ---------------------------- (X) | cs |
2) 흡사한 이름을 사용하거나 유사한 개념을 다르게 표기하는 행위는 피하도록 합니다.
1 | Map<String, Student> studentList; ------------------------ (X) | cs |
3) 의미가 있게 구분합니다.
4) 검색하기 쉬운 이름을 사용합니다.
1 2 3 4 5 | if ( getDayOfWeek() == 1 ) --------------- (X) private static final MONDAY = 1; ... if ( getDayOfWeek() == MONDAY ) ---------- (O) | cs |
5) 클래스명은 명사나 명사구, 메소드는 동사나 동사구로 시작하도록 합니다.
1 2 | Class : Cutomer, Account, ... Method : getXXX(), setXXX(), isXXX(), ... | cs |
6) 개념 하나에 단어 하나를 사용합니다.
- fetch, retrieve, get... 등등 섞어 쓰지 않습니다.
함수 만들기
- 제어문 단위로 적절하게, 한 함수에서 한가지 일만 하게 만듭니다.
1) 최대한 작게 만듭니다.
1 2 3 | private boolean isEmpty(String value) { return value == null || "".equals(value); } | cs |
2) 제어문 단위로 적절하게 함수를 만듭니다.
3) 함수 하나당 하나의 일만 수행합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | private void method() { for() { ... } for() { ... } } ----------------------------- ( X ) private void method() { for1(); for2(); } ----------------------------- ( O ) | cs |
4) 한 함수에서 추상화수준(깊이)을 하나로 합니다.
- 꼬리에 꼬리를 무는 메소드는 되도록이면 쓰지 않습니다.
5) switch 문을 드러내지 않도록 합니다.
- 디자인 패턴인 팩토리 패턴을 활용하는 것을 추천합니다.
6) 서술적인 함수명을 사용합니다.
- findStudentByStudentId(), findStudentByStudentNumber() 등등
7) 어규먼트는 최대한 적게 사용합니다.
- 플래그 어규먼트 사용하지 않는다.
- 어규먼트들을 클래스화 할 수 있는지 확인합니다.
1 2 3 | private List<Area> findAreaByPointXAndPointY(double pointX, double pointY) --- (X) private List<Area> findAreaByPoint(Point point) ------------------------------ (O) | cs |
8) 함수 안에 부수 기능을 숨기지 않습니다.
1 2 3 4 | private List<Student> findById(Long id) { deleteStudentById(id); return ... } ------------------------------------- (X) | cs |
9) 명령과 조회를 구분합니다.
1 2 3 | if ( setPoint(127.000000, 37.000000) ) { } ------------------------------------- (X) | cs |
10) 복잡한 구조에서는 예외처리를 이용합니다.
11) 반복 코드를 사용하지 않습니다.
12) 큰 구조에서는 두개이상의 return 문을 넣지 않도록 합니다.
'clean code & refactoring' 카테고리의 다른 글
클린 코드 (3) (404) | 2017.03.26 |
---|---|
클린 코드 (1) (392) | 2017.03.26 |
Comments