-
[Clean Code] 깨끗한 코드, 의미 있는 이름Dev/정리 2022. 5. 14. 21:22
나쁜 코드란?
- 성능이 나쁜 코드
- 의미가 모호한 코드
- 중복된 코드
나쁜 코드가 나쁜 이유
- 깨진 유리창 법칙
나쁜 코드는 깨진 유리창처럼 계속 나쁜 코드가 만들어지도록 한다.
- 생산성 저하
나쁜 코드는 생산성을 저하 시킨다.
- 새로운 시스템을 만들어야한다
현시스템을 유지보수하며, 대체할 새로운 시스템 개발은 현실적으로 매우 어렵다.
클린 코드
- 성능이 좋은 코드
- 의미가 명확한 코드(= 가독성이 좋은 코드)
- 중복이 제거된 코드 -> 명료한 코드
간단한 코드
- 모든 테스트를 통과한다.
- 중복이 없다.
- 시스템 내 모든 설계 아이디어를 표현한다.
- 클래스, 메서드, 함수 등을 최대한 줄인다.
의미 있는 이름 짓기
- 의도를 분명히 밝히기
// 잘못된 변수 int a; String b; // 올바른 변수 int itemCount; String itemName;
변수(혹은 함수나 클래스)의 존재 이유는? 수행 기능은? 사용 방법은? 따로 주석이 필요하다면 의도를 분명히 드러내지 못했다는 말
- 루프 속 i,j,k 사용하지 않기
배열을 순회할 때 index를 의미하는 i를 사용하지 않고 advanced for 문으로 대체할 수 있다
lamda를 사용할 수도 있다.
i,j,k 대신 맥락에 맞는 이름을 사용하기
- 통일성 있는 단어를 사용하기
팀원들과 네이밍회의를 통해서 통일된 단어를 사용하기
- 변수명에 타입 넣지 않기
네이밍만 보고 타입을 유추할 수 있도록!
Google Java Naming Guide
- All lower case, no underscores
com.example.deepspace(👍)
com.example.deepSpace(👎)
com.example.deep_space(👎)- UpperCamelCase(대문자로 시작)
// 클래스는 명사, 명사구
Charcter, ImmutableList
// 인터페이스는 명사, 명사구, (형용사)
List, Readable
// 테스트 클래스는 Test로 끝나기
HashTest, HashIntegrationTest- LowerCamelCase(소문자로 시작)
// 메서드는 동사, 동사구
sendMessage, stop
// jUnit 테스트에 underscore이 사용되기도 함
// <methodUnderTest>_<state> 패턴
pop_emptyStack'Dev > 정리' 카테고리의 다른 글
[Spring Security] 스프링 시큐리티 주요 아키텍처 (0) 2023.01.20 [Clean Code] 형식 맞추기 (0) 2022.05.17 [Clean Code] 함수 (0) 2022.05.15