소프트웨어에서 이름을 잘 지으면 여러모로 편하다.
1. 의도를 분명히 밝혀라
public List<int[]> getThem(){
List <int[]> list1 = new ArrayList<int[]>();
for (int[] x: theList)
if (x[0]==4)
list1.add(x);
}
➡️ 코드의 맥락이 코드 자체에 명시적으로 드러나지 않는다.
➡️ 각 개념에 이름을 붙이자
public List<int[]> getFlaggedCells(){
List<int []> flaggedCells = new ArrayList<int []>();
for(int[] cell : gameBoard)
if(cell[STATUS_VALUE] == FLAGGED)
flaggedCells.add(cell);
return flaggedCells;
}
2. 그릇된 정보를 피하라
- 널리 쓰이는 의미가 있는 단어를 다른 의미로 사용하지마라.
- 서로 흡사한 이름을 사용하지 않도록해라.
3. 의미 있게 구분하라
- 이름이 다르면 의미도 다르게 ex. 클래스를 ProductInfo 혹은 ProductData로 부른다면 개념을 구분하지 않은 채 이름만 달리한 경우다.
- 읽는 사람이 차이를 알도록 이름을 지어라. ex. getActiveAccount() / getActiveAccounts()를 새로 온 프로그래머는 이해하기 어렵다.
4. 발음하기 쉬운 이름을 사용하라
- ex) private Date genymdhms 보다는 private Date generationTimestamp가 낫다.
5. 검색하기 쉬운 이름을 사용하라
- ex) grep으로 찾기 쉽도록 이름을 지어라.
6. 인코딩을 피하라
7. 자신의 기억력을 자랑하지 마라
- 클래스 이름과 객체 이름은 명사나 명사구가 적합하다. ex) Customer, WikiPage
- 메서드 이름은 동사나 동사구가 적합하다. ex) postPayment, deletePage
접근자, 변경자, 조건자는 javabean 표준에 따라 값 앞에 get, set, is를 붙인다. - 기발한 이름은 피하라
8. 한 개념에 한 단어를 사용하라
- ex) 기능이 같은 메소드를 클래스마다 fetch, retrieve, get으로 제각각 부르면 혼란스럽다.
9. 의미 있는 맥락을 추가하라
- 클래스, 함수, 이름 공간에 넣어 맥락을 부여해라.
- 모든 방법이 실패하면 마지막 수단으로 접두어를 붙인다. ex. firstName, lastName에 addr라는 접두어를 추가하면, addrFirstName, addrLastName으로 의미가 더 명확해진다.
10. 불필요한 맥락을 없애라
- 짧은 이름이 긴 이름보다 좋다. 의미가 분명할 경우, 불필요한 맥락은 추가하지 말자.
적용하기
명사에 s가 붙는 경우가 있고, 아닌 경우가 섞여있어 코드의 일관성을 낮추고있다. 작성할 당시의 의도는 객체를 반환하는 경우와 객체의 list를 반환하는 경우를 구분하기 위함이었으나, 문제점이 두가지 있었다. 1) 다른 개발자가 프로젝트에 참여한다면 이해하지 못할 가능성이 크다. (설명을 하더라도 헷갈릴 것이다.) 2) 모델을 list로 반환하는 케이스, list가 아닌 케이스로 재사용을 할 경우가 있다. ➡️ 객체의 name은 일괄적으로 단수형을 사용하고, 인스턴스가 list일 경우 복수형을 사용하는 것으로 통일하는 작업을 진행하였다. (작업을 진행하면서 규칙에 어긋나게 네이밍한것이 있다는 걸 알게되었다..) |
출처) clean code / 인사이트
'Book review > clean code' 카테고리의 다른 글
6장. 객체와 자료구조(clean code) (0) | 2021.08.25 |
---|---|
5장. 형식 맞추기(clean code) (0) | 2021.08.09 |
4장. 주석(clean code) (0) | 2021.08.06 |
3장. 함수(clean code) (0) | 2021.08.06 |
1장. 깨끗한 코드(clean code) (0) | 2021.08.04 |