불필요한 연산이 들어가서 개선의 여지가 있는 코드
이해하기 어려운 코드, 네이밍과 그 내용이 다른 코드
비슷한 애용인데 중복되는 코드들은 버그를 낳는다.
나쁜 코드는 깨진 유리창 처럼 계속 나쁜 코드가 만들어지도록 한다.
나쁜 코드는 팀 생산성을 저하시킨다. 기술 부채를 만들어 수정을 더 어렵게 한다.
현시스템을 유지보수하며 대체할 새로운 시스템 개발은 현실적으로 매우 어렵다.
일정 안에 새로운 기능을 완성해야 한다.(하지만.. 나쁜 코드는 생산성을 저하하기 때문에 오히려 일정을 못맞춘다.)
생각보다 영향 범위가 넓어서 건드렸다가 다른 부분에 버그가 발생할까봐(하지만.. 기술부채는 부메랑 처럼 우리에게 돌아온다.)
나는 우아하고 효율적인 코드를 좋아한다.
논리가 간단해야 버그가 숨어들지 못한다.
의존성을 최대한 줄여야 유지 보수가 쉬워진다.
오류는 명백한 전략에 의거해 철저히 처리한다.
성능을 최적으로 유지해야 사람들이 원칙 없는 최적화로
코드를 망치려는 유혹에 빠지지 않는다.
깨끗한 코드는 한 가지를 제대로 한다.
깨끗한 코드는 단순하고 직접적이다.
깨끗한 코드는 잘 쓴 문장처럼 읽힌다.
깨끗한 코드는 결코 설계자의 의도를 숨기지 않는다.
오히려 명쾌한 추상화와 단순한 제어문으로 가득하다.
int a;
String b;
System.out.printf("User Requested %s. count = %d", b, a);
class SalesItem {
ItemCode code;
String name;
int count;
}
// ..
SalesItem selectedItem = salesItemRepository.getItemByCode(purchaseRequest.getItemCode());
System.out.printf("User Requested %s. count = %d", selectedItem.getName(), selectedItem.getCount());
for (String message : messages) {
// ..
}
messages.stream().forEach(
message -> // ..
)
i, j -> row, col / width, height
i, j, k -> row, col, depth
Member / Customer / User Service / Manager Repository / Dao
List, Map 의 자료구조일 경우 표현할 이름이 없기 때문에 명시해줘도 괜팒다.
인터페이스일 경우 과거에는 이름앞에 I 라는 뜻으로 인터페이스를 의미했지만 명시하지 않는것이 좋다.
interface 를 구현한 구체 클래스는 xxxxImpl 로 이름을 짓는것이 좋다.
모두 소문자로, 언더 스코어 금지!
대문자로 시작하여 카멜케이스로 작성
메서드는 동사, 동사구
해당 포스팅은 제로 베이스 클린코드 한달한권을 수강 후 정리한 내용입니다.