Web Programming

클린코드 2장 : 의미있는 이름

FelixShin 2017. 10. 22. 11:04
반응형


1. 이름을 잘 짓는 규칙

1) 의도를 분명히 밝혀라

 ex) int d (x) 

       int daySinceCreation;


2) 그릇된 정보를 피하라

(1) 나름대로 널리 쓰이는 의미 있는 단어를 다른 의미로 사용하면 안됨

ex) List는 프로그래머에게 특수한 의미다 

     Lixt(x) -> accountList

(2) 서로 흡사한 이름을 사용 하지 않기

ex) XYGControllerForEfficientHandlingOfStrings, XYZControlerForEfficientStorageOfStrings 두 단어는 너무 비슷

(3) 이름 쓰는 것을 조심하기

: 소문자 L이나 대문자 O 변수는 주의 - l은 1과 O,o은 0과 비슷

ex) if(O ==1 ) a= 01;


3) 의미있게 구분하라

ex) moneyAcoount, money는 구분이 안됨, accountData, accout는 구분이 안됨


4) 발음하기 쉬운 이름을 사용하라

: 발음하기 어려운 이름은 토론하기도 어려움

ex) genymdhms : generate date year month day hour minute second를 줄여 변수명을 정했는데

generationTimestamp이게 더 나음


5) 검색하기 쉬운 이름을 사용하라

: 변수나 상수를 여러군데 쓴다면 검색하기 쉬운 이름이 좋음


6) 인코딩을 피하라

: 인코딩 언어까지 익히라는 것은 개발자에게 비합리적, 인코딩은 불필요한 정신적 부담

ex) 인터페이스와 구현 클래스를 만들어야 한다면

IShapeFactory (x) -> ShapeFactoryImp or CShapeFactory

-> I는 주의를 흐트리고 과도한 정보를 제공함


7) 자신의 기억력을 자랑하지 마라

: 변수 이름을 자기 자신만 아는 이름으로 변환하는 것은 바람직하지 못함

: a, b, c를 사용하는 것은 최악


(1)  클래스 이름 : 명사나 명사구가 적합 

ex) Customer, WikiPage

(2)  메서드 이름 : 동사나 동사구가 적합

ex) postPayment


8) 기발한 이름은 피하라

ex) whack() (x) -> kill() (o)

# whack은 세게 후려치다, 살해하다 뜻을 가지고 있음


9) 한 개념에 한 단어를 사용하라

:추상적 개념 하나에 단어 하나를 선택해 이를 고수

ex) controller, manager, driver를 섞어 쓰면 혼란스러움


10) 말장난을 하지마라

: 의도에 맞는 코드를 써라

ex) add를 많이 쓰고 일관성을 맞추려 add라고 하지말고, insert, append처럼 상황에 맞는 이름을 써라


11) 해법영역에서 가져온 이름을 사용하라

: 전산용어, 알고리즘 이름, 패턴 이름, 수학 용어를 사용해도 괜찮음(모르는 영역에서 가져오면 안됨)

ex) Visitor패턴에 익숙한 사람은 AccountVisitor를 금방 이해, JobQueue도 프로그래머는 거의 다 이해


12) 문제영역에서 가져온 이름을 사용하라

: 적절한 프로그래머 용어가 없다면 문제영역에서 이름을 가져옴

: 문제영역 개념과 관련 깊은 코드면 문제영역에서 이름을 가져와야 함


13) 의미있는 맥락을 추가하라

: 스스로 의미가 분명한 이름이 있음

ex) firstName, lastName, street, houseNumber -> 변수를 보면 주소라는 사실을 금방 아래챔

->  addr이라는 접두어를 추가하면 addrFirstName, addrStreeet 등 맥락이 좀 더 분명해짐


14) 불필요한 맥락을 없애라

: 고급 휘발유 충전소(Gas Station Deluxe)라는 앱을 개발한다고 모든 클래스를 GSD로 이름을 시작하게끔 하는 것은 불필요함

-> 이름 17자 중 10자가 중복이면 불필요 -> 일반적으로는 이름이 짧은게 긴거보다 좋음