오해할 수 없는 이름들
더스틴 보즈웰, 트레버 파우커
느낌표 ! (인상 깊은 문장 | 문맥)
Filter
대상을 ‘고르는’ 것인지 아니면 ‘제거하는’ 것인지 불분명하다. 대상을 ‘고르는’ 기능을 원한다면 select() 가, 대상을 ‘제거하는’ 기능을 원한다면 exclude() 가 더 낫다
p.50
경계 포함 여부에 따른 변수명
min, max
경계를 포함하는 한계값을 다룰 때는 min 과 max 를 사용해라
p.51
first, last
경계를 포함하는 범위에는 first 와 last 를 사용하라
p.52
begin, end
경계를 포함하고 / 배제하는 범위에는 begin 과 end 를 사용하라
p.53
경계가 필요한 경우 대체로 자연스럽게 min, max 혹은 start, end 로 정의하곤했는데 저자가 말하는대로 (min, max), (first, last), (begin, end) 를 상황에 맞게 써야겠다. 이러한 변수명이 코드 이해와 버그를 줄 일 수 있는 것 같다. 한편으로는 이러한 경계와 관련해서 불편함을 인식하지 못했다는게 아쉽다.
불리언 변수에 이름 붙이기
이름에서는 의미를 부정하는 용어를 피하는 것이 좋다.
disable_ssl = false;
대신
use_ssl = true;
p.54
사용자의 기대에 부응하기
프로그래머들은 대개 get 으로 시작되는 이름의 메소드는 ‘가벼운 접근자’ 로서 단순히 내부 멤버를 반환한다고 관행적으로 생각한다.
…
getMean() 은 과거 데이터를 순차적으로 짚어가면서 동적으로 중앙값을 계산한다.
…
이러한 메소드명을 computeMean() 처럼 고쳐서 시간이 제법 걸리는 연산이라는 사실을 명확하게 드러내는 것이 좋다.
가져온다는 개념이면 거의 대부분 get 으로 시작하게 명명하였는데 읽고 탄식하기도 있지만 한편으로는 이제 알게되었으니 기분 좋기도 했다. 그냥 읽고 끄덕끄덕 것과 다르게 깨닫는 느낌이면 은은하게 기분이 좋은 것 같다. 몸소 경험했던 것이 떠오르기 때문일 것이다.
Chapter 3 느낌
Chapter 3 에서는 별 의식 없이 사용하던 경계 변수명, get* 등이 어떤 의미에서 잘못된 코드라는 것을 깨닫고 강제로 겸손하게 하는 것 같다. 아직 한참한참 부족하구나를 다시금 인지하게한다.