오늘 TIL 3줄 요약
의도를 분명히 밝혀라.
그릇된 정보를 피하라.
클래스 이름과 객체이름은 명사나 명사구가 적합하다. 메서드 이름은 동사나 동사구가 적합하다.
책에서 기억하고 싶은 내용
public static void copyChars(char a[] char b[]){
...
}
위 코드는 파라메터로 의미없는 이름을 사용해 파라메터를 제대로 이해하기 어렵다.
public static void copyChars(char target[] char source[]){
...
}
이렇게 변수의 이름을 정확히 해준다면 가독성이 더 좋아질 것이다.
getActiveAccount(); getActiveAccounts(); getActiveAcccoutInfo();
int a = 1;
if (O == l)
a = O1;
else
l = 01;
이는 가장 간단히 글꼴을 바꾸면 해결될 일이긴하지만, 소문자 L과 숫자 1이 유사하게 보이고 대문자 O는 0과 유사하게 보이게 되면서 코드가 엉망이 되는 케이스이다.
발음하기 쉬운 코드를 사용하면 지적인 대화가 가능해진다. (p.28)
DtaRcrd012라는 클래스를 어떻게 발음할 것인가? Customer와 같이 모두가 동일하게 발음 할 수 있는 클래스명을 사용해야 팀원들간의 소통이 원활할 것이다.
클래스 이름과 객체이름은 명사나 명사구가 적합하다. 함수 이름은 동사나 동사구가 적합하다. (p.32)
접근자, 변경자, 조건자는 javabean 표준에 따라서 앞에 get, set, is를 붙인다.
한 개념에 한 단어를 사용하라(p.33)
함수의 이름은 독자적이고 일관적이어야한다.
추상적인 개념에 맞는 단어 하나만을 선택하고 유지해야한다.
예를 들어 함수를 클래스마다 fetch, retrieve, get으로 각각 다른이름으로 정의한다면 어느 클래스에서 어느 이름을 지어줬는지 찾아내야한다.
또한 동일코드에서 controller, driver, manager를 섞어쓰는 것도 그렇다.
소감
아주 옛날에 함수 이름을 정하는 것이 가장 어렵다는 소리를 누군가 우스겟소리로 한 것을 들은적이있었다.
당시 막 코딩을 배우기 시작하고 있던 나는 거의 반이 농담이라고 생각했다.
어려운게 얼마나 많을텐데 고작 이름가지고...?
하지만 맞았다.
그동안 내가 짜왔던 함수의 이름들도 비슷한 의미를 가진 함수가 많이 있었다.
함수를 만들었는데 이미 동일한 함수의 이름이 정의되었던 적도 있었고 (물론 기능도 거의 유사했을 것이다. )
정말 이상한 줄임말을 써서 (controlXXX를 contXXX라고 했었다. ) 누군가에게 한 소리 듣기도 했다.
사실 주석을 무기로 더 마음껏 맘대로 한 것 같기도하다.
애초에 시작이 잘못되었다는 것을 책을 통해 알았다.
이제 문제점과 해결방법을 알았으니 앞으로는 더 신경써서 분명한 의도를 가진 코드를 생산해야겠다.