(CleanCode) 의미있는 이름
1. 의도를 분명히 밝혀라 다음코드의 목적은 무엇인가? 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을 어떻게 사용하는가? 2. 그릇된 정보를 피하라 그릇된 단서는 코드 의미를 흐린다. 나름대로 널리 쓰이는 의미가 있는 단어를 다른 의미로 사용해도 안된다. 예를들어, hp, aix, sco는 변수 이름으로 적합하지 않다. 유닉스 플랫폼이나 유닉스 변종을 가리키는 이름이기 때문이다. *서로 흡사한 이름을 사용하지 않도록 주의한다. 한 모듈에서XYZControllerForEfficientHandlingOfStrings라는 이름을 사용하고, 조금 떨어진 모듈에서 XYZControllerForEfficientHandlingStorageOfStrings라는 이름을 사용한다면? 두 단어는 겁나게 비슷하다. *유사한 개념은 유사한 표기법을 사용한다. 자동완성기능 사용!!! * 주의점 대문자 O와 소문자 l사용 주의 왜냐하면 숫자 0과 1과비슷하다. * 불용어를 추가한 이름 역시 아무런 정보도 제공하지 못한다. ->Product라는 클래스가 있다고 가정하자. 다른 클래스를 ProductInfo, ProductData라 ...