seunghyun Note

클린코드 챌린지 DAY2 (2024.06.23) 본문

스터디/클린코드 챌린지

클린코드 챌린지 DAY2 (2024.06.23)

승숭슝현 2024. 6. 23. 16:01

 

TIL (Today I Learned)

2024.06.23

✔️ range

2장. 의미 있는 이름

✔️ memory

  • 의도가 분명하게 이름을 지으라 - p22
  • 문제는 코드의 단순성이 아니라 코드의 함축성이다. - p23
  • 그릇된 정보를 피하라 - p24
  • 사람들은 단어에 능숙하다. 우리 두뇌에서 상당 부분은 단어라는 개념만 전적으로 처리한다. - p27
  • 자신의 기억력을 자랑하지 마라 -p31
    • 내가 가장 망각하는 부분... -> 변수도 마음대로 나만 해석할 수 있게끔 설정하고.. 나중에 까먹게 된다. ㅋㅋ
  • 변수 i,j,k는 괜찮다 (l은 절대 안 된다!) -> 왜? -p31
  • 특정 문화에서만 사용하는 농담은 피하는 편이 좋다. 의도를 분명하고 솔직하게 표현하라 -p33

✔️  learn

  • 과연 나에게 어떤 것이 더 익숙하고 편할까?

나는 솔직히 아래 코드가 더 익숙하다. 뭔가 곱하고 나눈다는 단순한 느낌?

for ( int j=0; j<34; j++){
	s += (t[j] *4 ) /5;
}

하지만 값이 커지거나 중복된 변수가 있지만 값이 바뀐다면 변수를 설정해서 위의 '4' 와 '5'가 어떤 용도로 사용하는지 알려주는 것이 중요하다는 것이다.

int realDaysPerIdealDay = 4;
const int WORK_DAYS_PER_WEEK = 5;
int sum = 0;

for(int j=0; j<NUMBER_OF_TASKS; j++){
	int realTaskDays = taskEstimate[j] * realDaysPerIdealDay;
    int realTaskWeeks = (realTaskDays / WORK_DAYS_PER_WEEK);
    sum += realTaskWeeks;
}

변수가 처음에는 길고 많으니 복잡한 코드라고 생각했지만 변수들을 해석하고 이해하면 더 간단하기에 값들의 의미를 분석해 원하는 상수를 가려낼 수 있다.

  • 클래스 이름, 메서드 이름

기존까지 클래스나 메서드 이름을 설정할 때 기능에 따라 분류하는 경향이 있었다. 예를 들면 '움직임'에 관련된 기능들이 있으면 메서드에 moveEntity, moveRect, moveCar ... 등등 , 서비스를 만들 때 `소비자`들이 있다면 people이라는 클래스를 만들어 constructor 를 추가해 줬다. 지금까지는 의식의 흐름으로 만들었는데 본문에는 클래스 이름은 동사는 사용하지 않는다. 클래스 이름과 객체 이름은 명사나 명사구가 적합하다.

그리고 메서드 이름은 동사나 동사구가 적합하다. 접근자, 변경자, 조건자는 표준에 따라 값 앞에 get, set, is를 붙인다. 

✔️ impression

함수나 클래스 설정하는 것이 의식의 흐름으로 많이 만들었는데 책을 보면서 형식화된 변수 선언들을 알게됐고 왜 그렇게 해야 하는지(인수인계, 사용자, 개발자들의 이해를 돕고 나의 기억력을 믿지 않아야 한다는 것)을 알게 됐다.

728x90