-
02. 의미 있는 이름스터디/Clean Code 2021. 8. 17. 16:56반응형
클린 코드, 로버트 C. 마틴
이름을 잘 짓는 규칙
1) 의도를 분명하게 밝혀라
변수나 함수 그리고 클래스 이름은 다음과 같은 질문에 모두 답해야 한다.
- 변수의 존재 이유는?
- 수행 기능은?
- 사용 방법은?
주석이 필요하다면 의도를 분명히 드러내지 못했다는 말이다.
public List<Cell> getFlaggedCells() { List<Cell> flaggedCells = new ArrayList<Cell>(); for (Cell cell : gameBoard) if (cell.isFlagged()) flaggedCells.add(cell); return flaggedCells; }
2) 그릇된 정보를 피하라
- List가 아니라면 Group을 사용해라
- 서로 흡사한 이름 사용하지 않기
3) 의미 있게 구분하라
이미 해당 변수가 있다고 해서
- 연속된 숫자를 덧붙이지 마라 (ex. a1, a2..)
- 불용어를 붙이지 마라 (ex. Product가 있으므로 ProductInfo)
4) 발음하기 쉬운 이름을 사용하라
5) 검색하기 쉬운 이름을 사용하라
이름 길이는 범위 크기에 비례해야 한다. (ex. s, j X / WORK_DAYS_PER_WEEK O)
6) 인코딩을 피하라
- 헝가리식 표기법을 사용하지 마라
- 멤버 변수 접두어를 붙이지 마라 (ex. m_dsc 등)
- 인터페이스 클래스와 구현 클래스(IShapeFactory X ShapeFactoryImp O)
7) 자신의 기억력을 자랑하지마라
- 문자 하나만 사용하는 변수 이름은 문제가 있다. (루프에서 반복횟수를 세는 i, j, k는 괜찮다.)
8) 클래스 이름
클래스 이름과 객체 이름은 명사나 명사구가 적합하다. (Customer, WikiPage, Account O | Data, Info X)
9) 메서드 이름
메서드 이름은 동사나 동사구가 적합하다. (postPayment, deletePage, save)
10) 기발한 이름은 피해라
11) 한 개념에 한 단어를 사용하라
- controller, manager, driver를 섞어 쓰면 혼란스럽다.
- DeviceManager와 ProtocolController는 근본적으로 어떻게 다른가?
12) 말장난을 하지마라
- 다른 개념에 같은 단어를 사용하지마라
- 기존의 add는 기존 값 두 개를 더하거나, 이어서 새로운 값을 만든다. 새로 작성하는 메서드는 집합에 값 하나를 추가한다. 이 메서드를 add라 불러도 괜찮을까? ==> 기존 add 메서드와 맥락이 다르므로 X
13) 해법 영역에서 가져온 이름을 사용하라
- 전산 용어, 알고리즘 이름, 패턴 이름, 수학 용어 등을 사용해도 괜찮다.
14) 문제 영역에서 가져온 이름을 사용하라
- 적절한 '프로그래머 용어'가 없다면 문제 영역에서 이름을 가져온다.
15) 의미 있는 맥락을 추가하라
- 클래스, 함수, 이름 공간에 넣어 맥락을 부여한다. 모든 방법이 실패하면 마지막 수단으로 접두어를 붙인다.
- 예를 들어, fisrtName, lastName => addrFisrtName, addrLastname 등 분명하게 표현한다.
16) 불필요한 맥락을 없애라
- 'Gas Station Deluxe' => 'GSD'로 변경 X
- 일반적으로 긴 이름이 짧은 이름보다 좋다. 다만 맥락이 분명해야 한다.
반응형'스터디 > Clean Code' 카테고리의 다른 글
01. 깨끗한 코드 (0) 2021.08.17