- 나쁜 예시
int d; -- 경과 시간(단위: 날짜)
- 좋은 예시
int elapsedTimeInDays; -- 경과시간
int daysSieceCreation; -- 생성시간
int datSineModofication; -- 수정시간
int fileAgeInDay; -- 파일 입력 시간
- 예약어 혹은 널리 알려진 용어들(유닉스 표현 용어인 hp, sco, aix) 등을 사용했을 경우 혼란을 일으킴
- 예시로 계정그룹을 묶을 때 실제 컨테이너가 List가 아닐 경우 변수 이름에 List를 붙이지 말자
ex) accountList, xxxList 등
예) 한 모듈에서 XYZControllerForEfficientHandlingOfString를 다른 모듈에선
XYZControllerForEfficientStorageOfStrings를 사용했을 경우 차이를 알 수 없음
예) 소문자 L은 숫자 1처럼 보이고, 대문자 O는 숫자 0처럼 보이기 때문에, 유사한 표기 형태 사용 시 주의 필요
int a = l;
if( o == l)
a = O1;
else
l = 01;
예1) Product클래스가 존재할 때, 각각의 ProductInfo, ProductData클래스를 만들 경우 둘의 의미가 불분명함.
예2) Customer vs CustomerObject
결론적으로 읽는 사람이 차이를 알 수 있도록 이름을 지어야 함.
- 예시로 숫자 7을 사용 했을 때, 검색을 하게 될 경우 7을 포함한 파일 이름이나 수식 모두 포함하여 검색이 어려움
MAX_CLASSES_PER_STUDETN = 7; 처럼 사용할 경우 검색이 쉬워짐
- 이러한 관점에서 볼 때 짧은 코드보다 조금은 길지만 긴 코드형태가 검색하기 용이함
- 헝가리안 표기법
DWORD dwCount의 타입이 Int로 바뀌었을 경우 해당 사용된 부분은 int nCount로 전부 변경해야 함.
- 변수에 접두어를 붙이지 말자
예전에는 클래스의 멤버임을 표현하기 위해 m_xxx 이런식으로 표현했으나, 최근에는 IDE에서 구분할 수 있기에
붙일 필요가 없음
- 인터페이스 클래스와 구현 클래스의 이름 중 하나를 인코딩해야 할 경우 구현클래스를 선택
인터페이스: ShapeFactory
- IShapeFacotry vs ShapeFactory
: 요근래 I를 붙이는것은 주의를 흐트리고, 과도한 정보를 제공하고, 해당 클래스가 인터페이스라는 것을
숨기기 싶기에 I를 붙이지 않음
구현클래스: ShapeFactoryImpl
예시) 호스트와 프로토콜을 제외한 소문자 URL을 r이라는 변수로 표현할 경우
👍 예외적으로 반복문 루프 변수는 i,j,k..n는 사용 가능
-> 포트란언어에서 시작된 전통적인 방식(l은 제외)
좋은 예시) Customer, WikiPage, Account, AddressParser
나쁜 예시) Manager, Processor, Data, Info 등을 비롯한 동사는 사용 X
좋은 예시) postPayment, deletePage, save... 등
예시) Complex fulcrumPoint = new Complex(23.0) ->
Complex fulcrumPoint = Complex.FromRealNumber(23.0)
👍 생성자를 제한하려면 Private 생성자를 선언
예를 들어 각각의 클래스마다 fetch, retrieve, get 등으로 제각각으로 부르면 혼란스러움
public static String add(String message, String messageToAppend);
public List<Element> add(Element element);
- Gas Station Deluxe(고급 휘발유 충전소)라는 어플리케이션을 만든다고 가정할 때, 모든 클래스 앞에 GSD같은 이름을 붙이는 것은 바람직하지 못함
- GSDAddress 대신 Address로 표현해도 충분함