본문 바로가기
독후감

클린코드 (Clean Code) 2장 (이름) 독후감

by 혼밥맨 2020. 12. 28.
반응형

클린코드 2장 독후감

Chapter 2. 의미 있는 이름

 - 프로젝트, 변수, 메소드, 함수, 클래스 모두 의미 있는 이름으로 설정되어야 한다.

 

2.1 들어가면서

 - 소프트웨어에서 이름은 어디에서나 쓰인다. 워드 파일, 텍스트 파일을 저장할 때도 문서 이름을 정한다. 이름을 잘 짓는 방법에 대해서 알아보자.

2.2 의도를 분명히 밝혀라

 - 변수 이름을 설정할 때 주의 깊게 살펴 더 나은 이름으로 지을 수 있도록 하자.

 

int t;  /* 아무런 의미가 없다. */

하지만

int totalSpentTime; 
int timeSinceStart; 

/* 조금 더 구체적으로 이름을 지으면 변수명에서부터 어떤 값을 저장하고 있는지 추측할 수 있다. 코드를 읽는 이도 행복하다. */
public List<int [ ]> getItem( ) {
  List<int [ ]> list_one = new ArrayList<int[ ]>( );
  for (int[ ] x : theList) {
    if (x[0] == 4) {
      list_one.add(x);
    }
  }
  return list_one;
}

/* 어떤 코드인지 짐작할 수 없다. 왜냐하면 좋은 이름을 가진 변수가 없기 때문이다. */
// 그렇다면 아래 코드는 어떤가?
public List<Cell> getFlaggedCells( ) {
  List<Cell> flaggedCells = new ArrayList<Cell>( );
  for (Cell cell : gameBorad){
    if (cell.isFlagged( )) {
      flaggedCells.add(cell);
    }
  }
  return flaggedCells;
}
// 처음 코드와 비교했을 때 변수의 이름이 더 구체적이다. 지뢰 찾기에서 깃발이 꽂힌 셀을 가져오는 메소드라고 하면 믿을 것이다.

2.3 그릇된 정보를 피하라

 - 흡사한 이름을 가진 변수를 만들지 마라. 예를 들어, SouthKoreaFootballPlayer와 SouthKoreaFootballPlayers는 너무 비슷하다. 변수 이름을 검색해도 구분하기 어려움이 있을 수 있다.

 

2.4 의미 있게 구분하라

 - 처음으로 코드를 읽는 사람조차도 이해할 수 있도록 비슷한 의미를 가진 변수, 메소드를 지양하고 이름만 보고 기능을 알 수 있도록 하자는 것이다.

 - check_Money(); check_Balance(); check_BankAccount();

 - 메소드 이름만 보고 어떤 기능이 다른지 구분이 가능한가?

 

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

 - int averageSalaryOfSouthKoreaFootballPlayers;

 - int ASOSKFP; 

 "팀장님, ASOSKFP 변수가 이상합니다." "팀장님, 한국축구선수 평균연봉 변수가 이상합니다." 당신은 이미 정답을 알고 있다.

 

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

 - int i, j, s, w; 보다는

 - int i, j, sum, workDay; 그리고 겹치는 이름이 없으면 더 좋다.

 

2.7 인코딩을 피하라

 - 이름에 인코딩은 불필요한 부담이다. 인코딩한 이름은 발음도 어렵고 오타를 유발한다.

 

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

 - 자신만 알고 있는 이름으로 이름을 정하지 마라. 정말 똑똑한 프로그래머는 간단 명료가 최고라는 사실을 알고 있다.

 

2.9 클래스 이름

 - 클래스, 인스탄스 이름은 명사가 적합하다. 동사로서의 의미도 같이 가지는 명사는 피하고 더 나은 이름을 찾는다.

 

2.10 메소드 이름

 - 메소드 이름은 동사가 좋다. 

 

2.11 기발한 이름은 피하라

 - 변수, 메소드 이름이 기발하면 이름이 기억날 뿐 기능을 기억하지 못한다. 이름을 정할 때는 재미보다 명확함을 추구하라.

 

2.12 개념 하나에 단어 하나를 사용하라

 - 모두 다른 클래스 마다 같은 기능을 하는 메소드를 이름 지을 때 getName (); retrieveName(); fetchName(); 이런식으로 하지 마라. 같은 기능을 한다면 다른 클래스여도 같은 이름을 이용하라.

 

2.13 말장난을 하지 마라

 - 이중적 의미 (double meaning)를 가진 이름을 피하라. 다른 기능을 하는 서로 다른 메소드에 같은 이름을 부여하지 마라.

 

2.14 해법 영역에서 사용하는 이름을 사용하라

 - 흔하고 보편적이고 친숙한 이름이 있다면 그 이름을 이용하라.

 

2.15  문제 영역과 관련 있는 이름을 사용하라

 - 적절한 보편적인 프로그래머 용어가 없다면, 문제 영역에서 이름을 가져온다. 문제 영역과 가장 관련 있는 이름으로 정한다.

 

2.16 의미 있는 맥락을 추가하라

 

2.17 불필요한 맥락을 없애라

 

2.18 마치면서

 - 이름을 잘 지으려면 설명하는 능력을 갖고 있어야 한다. 좋은 이름은 단기적인 코드 품질의 상승뿐만 아니라 장기적인 품질도 보장한다.

"깨끗한 코드를 작성하려면 힘겹게 습득한 감각으로 기법들을 적용하는 절제와 규율이 필요하다. '코드 감각'은 존재한다. 어떤 사람은 '코드 감각'을 타고난다. 어떤 사람은 많은 시행착오를 통해 얻는다. '코드 감각'이 있는 사람이라면, 나쁜 코드를 깨끗한 코드로 바꿀 수 있다."

 

 

 

 

<다른 사람의 독후감 영상>

www.youtube.com/watch?v=LNDIHqcOUBY&list=PL4KdJM8LzAMfSrWJldnGuU9O1EpsVbXZJ&index=2&ab_channel=KunalCholera

 

반응형

댓글