주석은 '순수하게 선하지 못하다!'
개인적으로도 항상 주석을 습관적으로 달곤 했다. 그 이유는 남들이 내 코드를 보았을 때 쉽게 읽을 수 있을거란 자신이 없었기 때문이다.
주석을 달 시간에 코드 자체를 정리하는 습관을 들여야 한다.
// 나쁜 코드
// 직원에게 복지 혜택을 받을 자격이 있는지 검사한다.
if ((employee.flags & HOURLY_FLAG) && (employee.age > 65))
// 좋은 코드
if (employee.isEligibleForFullBenefits())
// Copyright (C) 2003, 2004, 2005 by Object Mentor, Inc. All rights reserved.
// kk:mm:ss EEE, MMM dd, yyyy 형식이다.
Pattern timeMatcher = Pattern.compile("\\d*:\\d*:\\d* \\w*, \\w* \\d*, \\d*")
// 스레드를 대량 생성하는 방법으로 어떻게든 경쟁 조건을 만들려 시도한다.
for (int i = 0; i < 25000; i++) {
WidgetBuilderThread widgetBuilderThread = new WidgetBuilderThread(widgetBuilider, text, parent, failFlag);
Thread thread = new Thread(widgetBuilderThread);
thread.start();
}
assertTrue(a.compareTo(a) == 0); // a == a
assertTrue(a.compareTo(b) != 0); // a != b
assertTrue(a.compareTo(b) == -1); // a < b
assertTrue(a.compareTo(b) == 1); // a > b
// 여유 시간이 충분하지 않다면 실행하지 마세요!
public void _testWithReallyBigFile() {
writeLinesToFile(1000000000);
.......
}
// TODO-MdM 현재 필요하지 않다!
protected VersionInfo makeVersion() throws Exception {
return null;
}
String listItemCountent = match.group(3).trim();
// 여기서 trim은 정말 중요하다. trim 함수는 문자열에서 시작 공백을 제거한다.
// 문자열에 시작 공백이 있으면 다른 문자열로 인식되기 때문이다.
new ListItemWidget(this, listItemContent, this.level + 1);
return buildList(text.substring(match.end()));
위의 특수한 경우를 제외한 대다수의 주석이 여기에 속한다
public void loadProperties() {
try {
...
}
catch (IOException e) {
...
// 속성 파일이 없다면 기본값을 모두 메모리로 읽어 들인 것이다
}
}
// this.closed가 true 일 때 반호나되는 유틸리티 메서드다.
// 타임아웃에 도달하면 예외를 던진다
public synchronized void waitForClsoe(final long timeoutMills)
throws Exception
{
if (!closed)
{
wait(timeoutMills);
if (!closed) {
throw new Exception("MockResponseSender could not be closed")
}
}
}
// @param title CD 제목
// @param author CD 저자
// @param tracks CD 트랙 숫자
// 변경 이력(11-Oct-2001부터)
// ----------------------------
// 11-Oct-2001: 클래스를 다시 정리하고 새로운 패키지인 com.jrefinery.data로 옮김
// 05-Nov-2001: getDescription() 메서드를 추가
// ......
// 기본 생성자
protected AnnualDateRule() {}
// 그 달의 날짜
private int dayOfMonth;
// 나쁜 예
// 전역 목록 <smodule>에 속하는 모듈이 우리가 속한 하위 시스템에 의존하는 가?
if (smodule.getDependSubsystems().contains(SubSysMod.getSubSystem()))
// 좋은 예
ArrayList moduleDependees = smodule.getDependSubsystems();
String ourSubSystem = subSysMod.getSubSystem();
if (moduleDependees.contains(ourSubsystem))
// Actions ///////////////////////////////////////
InputStreamResponse response = new InputSteamReseponse();
response.setBody(formatter.getResultStream(), formatter.getByteCount());
// InputStream ressultStream = formatter.getResultStream();
// StreamReader reader = new StreamReader (resultsStream);
// 적합성 테스트를 위한 과업
// 이 과업은 적합성 테스트를 수행해 결과를 출력한다
// <p/>
// <pre>
// <taskdef name="execute-fitnesse-test"
// .....