나는 A회사에서 일하다가 B회사로 이직한 개발자이다. 이 회사의 어떤 프로그램의 소스를 고치라는 상급자의 지시가 있었다. 난 처음 이 회사의 프로그램소스를 보는 것이었다. 만약 java클래스, 메소드, 변수마다 어떤의미인지 코드만 봐야한다면, 나의 삽질시간은 배가 될 것이다. 그래서 나는 다음에 개발할 사람을 위해 문서를 만들기로 했다. 이 메소드는 어떤역할을 하고, 이 클래스는 어떤 클래스와 관계가 있고, 왜 이렇게 디자인패턴을 구현했는지를 적어놓을 것이다. 이 변수는 사용자의 요청을 처리할 때 어떤 역할을 하는지도 적을 것이다. 소스와 함께 볼수 있고 문서화가 쉬우며 구조화되어있는 그것!!!
그것은 바로 어노테이션~~~
@interface methodDesc{
int id(); //이 메소드의 아이디
String TODO(); //구현중이라면 할일을 적음
String returnType(); //왜 이런타입을 지정했는지 설명
String uptoDate(); //언제 수정되어있는지 최신날짜
.... 등등...
}
예제)
그것은 바로 어노테이션~~~
@interface methodDesc{
int id(); //이 메소드의 아이디
String TODO(); //구현중이라면 할일을 적음
String returnType(); //왜 이런타입을 지정했는지 설명
String uptoDate(); //언제 수정되어있는지 최신날짜
.... 등등...
}
예제)
package com.hooney.ant;
public @interface RequestForEnhancedment {
int id(); //RFE와 관련된 유일한 ID번호
String synopsis(); //RFE의 개요
String enginner() default "[unassigned]"; //RFE를 구현한 프로그래머 이름
String date() default "[unimplemented]"; //RFE가 구현된 날짜
enum Level{BAD, INDIFFERENT, GOOD};
Level value();
}
package com.hooney.ant;
import java.util.Date;
import com.hooney.ant.RequestForEnhancedment.Level;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("helloWorld");
}
@RequestForEnhancedment(
id=23825,
date="4/2/2005",
enginner="홍길동",
synopsis="시간여행 기능 제공",
value = Level.BAD
)
public static void travelTrhoughTime(Date destination){
}
}
'JAVA이야기' 카테고리의 다른 글
ThreadPoolExecutor (0) | 2011.12.07 |
---|---|
어노테이션2 (0) | 2011.11.21 |
동기화 클래스 구현 (0) | 2011.11.11 |
스레드 팩토리 (0) | 2011.11.11 |
Selector.open() 뜯어보자 (0) | 2011.11.10 |