1) 성능이 나쁜 코드
불필요한 연산이 들어가서 개선의 여지가 있는 코드
2) 의미가 모호한 코드
이해하기 어려운 코드
네이밍과 그 내용이 다른 코드
3) 중복된 코드
비슷한 내용으로 중복된 코드들은 버그를 낳는다.
1) 깨진 유리창 법칙
나쁜 코드는 깨진 유리창 처럼 계속 나쁜 코드가 만들어지도록 한다.
2) 생산성 저하
나쁜 코드는 팀 생산성을 저하시킨다.
기술 부채를 만들어 수정을 더 어렵게 한다.
3) 새로운 시스템을 만들어야 한다.
현 시스템을 유지보수하며 대체할 새로운 시스템 개발은 현실적으로 매우 어렵다.
1) 성능이 좋은 코드
2) 의미가 명확한(가독성이 좋은) 코드
3) 중복이 제거된 코드
1) 루프 속 i, j, k 사용하지 않기
2) 통일성 있는 단어 사용하기
Member/Customer/User
Service/Manager
Repository/Dao
3) 변수명에 타입 넣지 않기
List와 Map은 허용
1) Package Naming Guide
All lower case, no Underscores ex) com.example.deepspace
**2) Class Naming Gudie
UpperCamelCase
// 클래스는 명사, 명사구
// 인터페이스는 명사, 명사구(형용사)
// 테스트 클래스는 Test로 끝나기
**3) Method Naming Guide
LowerCamelCase
// 메서드는 동사, 동사구 ex) sendMessage
// Junit 테스트에서 underscore 사용되기도 함
// methodUnderTest_state 패턴 ex) pop_emptyStack