Clean Code 읽기(2)
2장 의미 있는 이름
-
들어가면서
함수,변수,패키지,클래스 등 여러곳에 이름을 붙인다. 이름 붙이는 규칙을 소개
-
의도를 분명히 밝혀라
좋은 이름을 지으려면 시간이 걸린다 -> 하지만 그로인해 절약하는 시간이 더 많다.
변수(함수,클래스 등)의 존재 이유는? 수행기능은? 사용방법은? 을 드러낼 필요가있다.
예제 코드
-
그릇된 정보를 피하라
그릇된 단서를 남기지마라 - 쓸대없이 약어를 사용하여 혼란을 준다던가, 변수 타입이 아닌데 변수타입을 넣어 이름을 만들던가(List가 아닌데 numberList로 작성한다던지..), 유사한 이름을 만들어 혼란을 주지 않는다, 유사한 개념은 유사한 표기법을 사용, 헷갈리는 글씨(O, 0 / l 1 등..)
-
의미 있게 구분하라
product, productInfo, productData 뭐가 다름?, 읽는사람이 보고 구분이 갈 수 있도록 이름을 짓자.
-
발음하기 쉬운 이름을 사용하라
내 생각엔, 굳이 줄여쓰지말자는 얘기인거같다. 요즘은 자동완성도 잘 되어있으니, generationYearMonthoDayHourMinuteSecond라고 해도 될거같은데 너무 기니까 딱 generationTimestamp라고 쓴거같다.
-
검색하기 쉬운 이름을 사용하라
그냥 상수로 쓸수있는것을 검색할 수 있도록 변수로 지정해서 해주는것이 좋다.
const int WORK_DAYS_PER_WEEK
-
인코딩을 피하라
유형이나 범위까지 인코딩에 넣지말아라
무슨말인지 잘 모르겠..
-
헝가리식 표기법
헝가리식 표기법은 변수나 함수이름에 데이터타입을 명시하는 명명규칙이라고 생각하면된다. 근데 요즘은 컴파일러가 타입 오류를 감지 해주기때문에 굳이 변수명에 변수타입을 인코딩하여 넣을 필요가없다. bool bValue 이런거
-
멤버 변수 접두어
멤버변수에 흔히 private String m_name 이런식으로 클래스의 멤버변수라는 표기를 해주었는데 요즘은 멤버 변수를 다른 색상으로 표시하거나 눈에 띄게해주므로 굳이 붙일필요가없다.
-
인터페이스 클래스와 구현 클래스
인터페이스의 경우는 접두어나 접미어가 필요할수있다. 내 KwInfoApi프로젝트의 Service 인터페이스와 ServiceImpl 구현 클래스같은 예시이다.
-
-
자신의 기억력을 자랑하지 마라
for문이나 while문의 count용으로 i,j,k를 제외하고는 변수이름을 명료하게 지어라
-
클래스 이름
클래스, 객체이름은 명사나 명사구가 적합하다. 동사는 사용하지않는다. Manager, Processor, Data, Info등은 피한다
-
메서드 이름
메서드 이름은 동사나 동사구가 적합하다. postPayment, deletePage 등, Getter, Setter, ToString, 생성자 등을 사용하자.
-
기발한 이름은 피하라
재밌는 이름 X, 명료함 이름 O
-
한 개념에 한 단어를 사용하라
객체가 제공하는 메소드 목록에서 주석은 보여주지않으므로 함수이름과 매개변수 이름은 독자적이고 일관적이어야한다. Get을 사용했으면 get만쓰고 다른 ‘얻다’뜻을 가진 단어를 쓰지말자
-
말장난을 하지마라
add를 예시로, add가 두값을 더할수도있지만, 그냥 값을 컨테이너에 추가할수도있다. 이렇게 일관성을 핑계로 헷갈리게하지말고 insert나 append로 고치자
-
해법 영역에서 가져온 이름을 사용하라
알고리즘, 패턴이름 등의 용어를 사용해도 괜찮다. 해법영역에서 가져오라는뜻
-
문제 영역에서 가져온 이름을 사용하라
적절한 용어가없을경우는 문제영역에서 가져올 필요가있다.
프로그래머라면 해법영역과 문제영역을 구분할 줄 알아야한다.
-
의미 있는 맥락을 추가하라
예시코드를 보니, 메소드명과 변수이름을 보고 맥락을 파악할 수 있었다. 그리고 새로운 메소드로 나누어 표현하니 가독성이 더 좋아졌다.
-
불필요한 맥락을 없애라
‘Gas Station Deluxe’ 애플리케이션을 만든다고 가정하면, 모든 클래스 이름을 GSD로 시작하는것은 좋지않다. 이름에 불필요한 맥락을 추가하지 않도록 주의해야한다.
-
마치면서
좋은 이름을 선택하는것은 매우 중요하다.
2장을 보고, 사실 변수명이나 클래스 메소드명이 해당 기능을 명료하게 나타내야한다는것은 알고있었다. 근데 내 코드들을 떠올려보면 Data, Info같은 불용어들을 자주 붙였던거같다. 고쳐볼 수 있으면 고쳐보고 또 리뷰를 받자
댓글남기기