Java/클린코드
깨끗한 코드 그리고 의미있는 이름
chjs93
2022. 2. 6. 23:27
나쁜 코드
클린코드를 이야기 하기 앞서 나쁜코드의 예시는 다음과 같다.
- 성능이 나쁜 코드 : 불필요한 연산을 개선할 여지가 있는 코드
- 의미가 모호한 코드 : 이해하기 어렵거나 네이밍과 내용이 다른 코드
- 중복된 코드 : 비슷한 내용인데 중복됨으로 버그를 낳는 코드
왜 나쁜 코드를 짜는 걸까?
- 시간이 없어서
- 영향 범위 (Side Effect) 가 넓어서
클린 코드란?
클린 코드는 나쁜 코드의 반대라고 할 수 있다.
- 성능이 좋은 코드
- 의미가 명확한 코드 (가독성이 좋은 코드)
- 중복이 제거된 코드
유명하고 노련한 프로그래머들의 클린 코드 의견은 다음과 같다.
- 비야네 스트롭스트룹 - C++ 창시자
- 깨끗한 코드는 한 가지를 제대로 한다.
- 그래디 부치 - 객체지향 대가
- 깨끗한 코드는 잘 쓴 문장처럼 읽힌다.
- 빅 데이브 토마스 - 이클립스 전략의 대부
- 깨끗한 코드에는 단위 테스트 케이스와 인수 테스트 케이스가 존재한다.
- 마이클 페더스 - Working Effectively with Legacy Code 저자
- 깨끗한 코드는 언제나 주의 깊게 짰다는 느낌을 주는 코드
- 론 제프리스
- 중복없는 코드
- 워드 커닝햄 - 위키 창시자
- 짐작한 기능을 그대로 수행하는 코드
클린한 코드를 작성하는 방법으로 책에서는 다음 규칙을 제시한다.
- 보이스카우트 규칙
- 손대기 전보다 손댄 후가 더 깨끗한 코드!!
의미 있는 이름
- 클래스 (객체) 이름 : 명사, 명사구
- 메소드 이름 : 동사, 동사구
- 인터페이스 이름 : 접두어 붙이지 않기 public interface IShapeFactory -> ShapeFactory
- 구현 클래스 이름 : public class ShapeFactoryImpl -> CircleFactory
- 변수명에 타입 넣지 말자
- String nameString -> name
- int itemPriceAmount -> itemPrice
- Account[] accountArray -> accounts
- List accountList -> accounts, accountList
- Map accountMap -> accountMap
- 루프 속 i j k 사용하지 않기 -> advanced for 문으로 대체하자! -> lamda를 사용하자
- i, j -> row, col / width, height
- i, j, k -> row, col, depth
- 통일성 있는 단어 사용하기
- Member, Customer/ User
- Service/ manager
- Repository / Dao
- 등은 팀 협업을 통해 이야기 하자
Google Java Naming Guide
https://google.github.io/styleguide/javaguide.html#s5-naming