의도를 분명히 밝혀라 좋은 이름을 지으려면 시간이 걸리지만 좋은 이름으로 절약하는 시간이 훨씬 더 많다. 변수나 함수 그리고 클래스 이름은 아래의 질문에 모두 답할 수 있어야 한다. 변수(혹은 함수나 클래스)의 존재 이유는? 수행 기능은? 사용 방법은? int d; int elapsedTimeInDays; int daysSinceCreation; int daysSinceModification; int fileAgeInDays; 위 변수 대신 아래 변수처럼 의도가 드러나는 이름을 사용하면 코드 이해와 변경이 쉬워진다. public List getThem(){ List list1 = new ArrayList(); for(int []x : theList){ if(x[0] == 4){ list1.add(x); ..
어째서 나쁜 코드를 짜는가 제대로 짤 시간이 없어서? 서두르느라? 우리는 프로그램이 돌아간다는 사실에 안도한다. 돌아가는 쓰레기에 스스로 위로를 하며 나중에 돌아와 고치겠다는 다짐을 한다. 하지만 나중은 결코 오지 않는다. - 르블랑의 법칙 中 나쁜 코드로 치르는 대가 나쁜 코드가 쌓일수록 팀 생산성은 떨어진다. 그때가 되면 관리팀에서 복구를 시도한다. 하지만 복구를 위해 추가된 인력과 무관하게 변경과 설계 의도를 구분하지 못해 나쁜 코드를 더 많이 양산하게 된다. 코드가 엉망이면 몇 시간으로 예상한 업무가 몇 주가 되기도 한다. 순식간에 나쁜 코드로 전락되는 것의 책임은 상사의 문제가 아니다. 프로그래머의 문제이다. 때문에 기한을 맞추며 빨리 가는 유일한 방법은 최대한 깨끗한 코드를 유지하는 것이다. ..