[클린코드] 2장. 의미 있는 이름

노을·2022년 1월 25일
0

cleancode

목록 보기
2/8
post-thumbnail




⭐ 의도를 분명히 밝혀라

좋은 이름을 지으려면 시간이 걸리지만 좋은 이름으로 절약하는 시간이 훨씬 많다.

public List<int[]> getThem(){
    List<int[]> list1 = new ArrayList<int[]>();
		for(int[] x : theList)
        if (x[0] == 4)
            list1.add(x);
		return list1;
}

다음 코드에서 이름을 바꿀 때, 고려 해야 할 사항은?
1. theList에 무엇이 들었는가?
2. theList에서 0번째 값이 어째서 중요한가?
3. 값 4는 무슨 의미인가?
4. 함수가 반환하는 리스트 list1을 어떻게 사용하는가?





public List<Cell> getFlaggedCells(){
    List<Cell> flaggedCells = new ArrayList<Cell>();
		for(Cell cell : gameBoard)
        if (cell.isFlagged())
            flaggedCells.add(cell)
		return flaggedCells;
}

다음과 같이 위 코드를 바꿀 수 있다.
List 반환 타입을 (새로 만든 Class) Cell 타입으로 바꿨고
메서드와 리스트 이름을 변경했다.
그리고 Cell 클래스 안에 isFlagged() 메서드를 추가하여 모호성을 없앴다.

⭐ 그릇된 정보를 피해라

  • 약어 사용 X
    (ex. 빗변 Hypotenuse을 나타내는 hp와 같은 약어 사용은 바람직하지 않다.)
  • 특수한 의미을 가지는 이름 사용 X
    (ex. 어떠한 집합을 표현할 때, 리스트가 아니라면 list와 같은 특수한 의미를 지닌 이름은 피한다.)

⭐ 의미있게 구분하라

  • (검색할 때 사용하지 않는 a, the, an 같은) 불용어 사용 X

⭐ 인코딩을 피하라

  • 접두어 피하기
    멤버를 뜻하는 m_, 인터페이스를 뜻하는 I 같은 접두어는 사용하지 않는다.
    인터페이스는 Person, 구현체는 PersonImpl로 하는 것이 적당하다.

⭐ 메서드는 동사, 클래스는 명사

⭐ 한 개념에 한 단어를 사용하라

  • controller, manager, driver라는 단어는 같은 기능을 하지만 다른 단어이므로 섞어 쓰면 혼란스러울 수 있다.



클린코드에서 가장 중요한 건 이름을 짓는 일인 것 같다. 확실히 이번 2장에서는 의미있는 이름을 강조하다 보니 알고리즘 문제를 풀 때도 이름을 신경 쓰게 된다. 근데 책에서 좋지 않은 이름은 꼭 바꾸라고 하는데 나는 이미 지어진 이름을 보면 더 좋은 이름이 생각 안나는 경우가 꽤 있는 거 같다.

0개의 댓글