어느 순간 오래 지난 내 코드를 보면서도 분석 시간이 많이 필요하다는 것을 느끼고, 미래에 내가 봤을 때도 쉽게 이해 할 수 있는 코드를 짜야겠다는 생각에 Clean코드를 간단하게 정리 해 보았다.
의미 있는 이름
변수, 함수, 인수, 클래스 ,패키지명에도 이름을 붙인다.
첫 번 째 규칙: 의도를 분명하게 밝히자.
'의도가 분명한 이름을 짓자'
ex) int kong=100 보다는 Vegitable kong = new Vegitable(100); 으로 클래스를 정의하는 것이 더 의미가 분명하다.
// 이름으로 의도가 파악되지 않는 이름
int d; // 경과 시간(단위: 날짜)
// 이름으로 의도가 올바르게 파악되는 이름
int elapsedTimeInDay;
두 번째 규칙: 그릇된 정보를 피하라.
여러 가지의 요소들이 있다고 List가 아닌데 accountList라고 명명하면 안된다.
ex) String accountList = "김치, 수박, 멜론";
세 번째 규칙: 의미 있게 구분하라.
예를 들어, Customer라는 클래스와 CustomerObject라는 클래스를 발견했다면 차이를 알 수 없다.
getActiveAccount( ); getActiveAccounts( ); getActiveAccountInfo( );
네 번째 규칙: 발음하기 쉬운 이름을 사용하라.
줄임말과 단어로 인식되지 않으면 뇌에 인식되기 어렵다.
다섯 번째 규칙: 검색하기 쉬운 이름을 사용하라.
문자 하나를 사용하는 이름과 상수는 텍스트 코드에서 쉽게 눈에 띄지 않는다는 문제점이 있다. MAX_CLASSES_PER_STUDENT는 grep으로 찾기가 쉽지만, 숫자 7은 은근히 까다롭고 검색 결과가 많이 나오기 때문에 찾기가 힘들다.
여섯 번째 규칙: 한 개념에 한 단어를 사용하라.
추상적인 개념 하나에 단어 하나를 선택해 이를 고수한다. 예를 들어, 유사한 행동을 하는 메서드를 클래스마다 fetch, retrieve, get으로 제각각 부르면 혼란스럽다.
일관성 있는 어휘를 선택해서 이름을 붙이자.
일곱 번째 규칙: 불필요한 맥락을 없애라.
일반적으로 짧은 이름이 긴 이름보다 좋다. 단, 의미가 분명한 경우에 한해서다. 이름에 불필요한 맥락을 추가하지 않도록 주의한다.
NHN KCP의Data를 처리하는 Application을 만든다고 가정해보자. 그래서 우리는 모든 클래스의 명칭에 KCPData라는 접두어를 붙이는 것은 매우 바람직하지 못하다. 접두어가 의미가 있다면 붙이는 것이 바람직하겠지만, 그렇지 않기 때문에 접두어를 붙이는 건 매우 협오적인 행동이다.
변수명은 짧으면 짧을 수록 좋다. 단, 의미가 잘 전달된다는 조건이다. 만약, 의미가 제대로 전달되지 않는 짧은 변수명이라면 과감하게 의미를 명확하게 전달할 수 있는 변수명으로 바꿔라. 변수명이 길어지더라도 말이다.
처음부터 완벽하게 코드를 짜는 사람은 없다. 일단 실행 가능한 코드를 작성하고 테스트 코드를 작성하면서 리펙토링 과정에서 보이는 것들을 클린하게 바꿔보자.
'전공 서적 > 클린 코드(에자일 기법)' 카테고리의 다른 글
태태개발일지(클린코드) (0) | 2023.11.21 |
---|