달력

2

« 2025/2 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
2011. 11. 21. 22:19

어노테이션 JAVA이야기2011. 11. 21. 22:19

나는 A회사에서 일하다가 B회사로 이직한 개발자이다. 이 회사의 어떤 프로그램의 소스를 고치라는 상급자의 지시가 있었다. 난 처음 이 회사의 프로그램소스를 보는 것이었다. 만약 java클래스, 메소드, 변수마다 어떤의미인지 코드만 봐야한다면, 나의 삽질시간은 배가 될 것이다. 그래서 나는 다음에 개발할 사람을 위해 문서를 만들기로 했다. 이 메소드는 어떤역할을 하고, 이 클래스는 어떤 클래스와 관계가 있고, 왜 이렇게 디자인패턴을 구현했는지를 적어놓을 것이다. 이 변수는 사용자의 요청을 처리할 때 어떤 역할을 하는지도 적을 것이다. 소스와 함께 볼수 있고 문서화가 쉬우며 구조화되어있는 그것!!!
그것은 바로 어노테이션~~~

@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
:
Posted by НooпeУ


Code Start Code End