
개발자라면 한번쯤은 위 책을 본 적이 있을 것이다. 개발자들 사이 "밥 아저씨"라고 불리는 로버트 마틴이라는 분이 쓴 책이다.
이 책 안에는 말 그대로 클린코드에 관련된 내용이 들어있다. 책은 약 500p가 될 정도로 결코 가벼운 책이 아니다.
하지만 읽어보면 이미 알게모르게 지키고 있는 규칙들이 꽤 많이 있다. 오늘은 이 책을 기반으로 내가 생각하는 클린코드에 대해 다뤄볼 것이다.
일단 클린코드가 되기 위해선 한 가지 전제가 있다고 생각한다.
요구사항을 모두 수행하는 소프트웨어
소프트웨어가 요구사항을 수행하지 못한다면 클린코드가 아닌 "구현"을 1순위로 두는 게 맞다.
그럼 "요구사항을 모두 수행하는 소프트웨어"라고 가정한다면 "하나의 언어처럼 잘 읽히는 코드"가 클린코드라고 생각한다.
언어처럼 잘 읽힌다는 건 무슨 말일까?
아래 코드를 살펴보자
if(choiceDate == LocalDate.now()){
System.out.println("True");
}
코드가 간단하기 때문에 어떤 로직인지 쉽게 알 수 있다. 바로 다음과 같은 로직이다.
내가 선택한 날짜가 현재 날짜와 같다면 True를 출력
그렇다면 위 코드는 과연 "언어"처럼 읽히는 코드일까?
내 답은 "아니다"이다. 그 이유는 choiceDate, "==", LocalDate.now() 총 3개의 키워드를 보고 판단해야 하기 때문이다. 그럼 다음과 같은 코드를 살펴보자
if(isChoiceCureentDate()){
System.out.println("True");
}
위 코드를 보면 "isChoiceCurrentDate()"를 "현재 날짜를 선택했는지"(이)라고 바로 파악이 된다.
즉 choiceDate, "==", LocalDate.now() 같은 것들을 읽지 않아도 "isChoiceCurrentDate()"와 같이 함수 이름만 읽으면 저절로 코드가 파악이 된다.
하나의 언어처럼 잘 읽히는 코드
바로 이 문장이 성립이 되는 것이다.
좀 더 구체적으로 말하면 "메소드로 추출하는 것"=이다. 그리고 이것이 클린코드의 핵심이라고도 생각한다.
클린코드 규칙은 굉장히 많이 있고 앞으로 하나씩 포스팅 할 예정이다.
무조건 가독성이 좋은 코드가 최고인 건 아니다.
임베디드와 같이 성능,메모리가 중요한 분야에서는 잘 읽히는 코드가 아니라 성능이 좋은 코드가 최고일 수 있다.
하지만 이런 특수한 경우를 제외하고는 이미 컴퓨터의 성능이 상향평준화가 되었기 때문에 "하나의 언어처럼 잘 읽히는 코드"가 1순위가 되어야 한다고 생각한다.
왜냐하면 코드가 잘 읽혀야 유지보수가 용이해지고, 궁극적으로 개발생산성이 높아지기 때문이다.
다음 포스팅에서는 좀 더 구체적으로 클린코드에 대해 다뤄봐야겠다.