Clean Code that Works.

햇갈려 >ㅁ<

깔끔하고 이해하기 쉽운 소스를 만들기 위해 구입한 책.
리팩토링 중에서 자주 쓰이는 것들을 간단한 예제와 함께 잘 정리해 두었다.
아주 쉽게 읽을수 있었던 책.

주요 내용은

- 매직넘버를 심볼릭 정수로 치환하기 : 소스에 '100'이라고 쓰여져 있다면.
- 제어 플래그의 삭제 : 제어 플래그 때문에 코드를 읽기 힘들다면.
- assertion의 도입 : '이것이 성립될 것' 이라고 하는 주석이 있으면.
- NULL 오브젝트 도입 : Null 체크가 너무 많다면.
- 메소드의 추출 : 코드가 너무 길어 읽기 힘들다면.
- 클래스의 추출 : 클래스의 책임이 너무 많다면.
- 타입코드를 클래스로 치환하기 : 오브젝트 식별에 int가 사용되고 있다면.
- 타입코드를 서브클래스로 치환하기 : 타입코드마다 동작이 다르다면.
- 타입코드를 State/Strategy로 치환하기 : 타입코드마다 동작이 다르다면.
- 오류 코드를 예외로 치환하기 : 오류 처리가 어지럽게 흩어져 있다면.
- 생성자를 Factory Method로 치환하기 : 클래스명이 new로 하드코딩 되어 있다면.
- 관찰되는 데이터의 복제 : 모델과 뷰가 혼재되어 있다면.
- 상속을 위임으로 치환하기  : IS-A관계가 아님에도 불구하고 상속하고 있다면.
- 위임의 은폐 : 위임 클래스까지 보인다면.
- 상속의 분할 : 상속이 얽혀 있다면.

아.. 보면서 내가 짰던 프로그램을 생각해보니..
리팩토링 해야할 것들이 ... ㄷㄷㄷㄷ
주말엔 소스 리팩토링좀 하자 ;ㅁ ;

지금은 Visual Editor(VE)를 사용하고 있지만..

다른 GUI 빌더인 Jigloo 사용방법을 나타낸 링크.

https://www.ibm.com/developerworks/kr/library/tutorial/os-eclipse-jigloo/section3.html

VE가 좋나 jigloo가 좋나.. =ㅁ=

지금은 VE를 통해 개발중.

이클립스에서 assertion을 도입하기 위해서는 약간의 옵션을 손봐주어야 한다.

메뉴에 Window -> Preferences -> Java -> Compiler -> Compliance and Classfiels and set
에 들어간후.

Compiler Compliance Level : 1.4
use default compliance을 체크를 풀고
Generated .class files compatibility 1.4 로 바꾸고
Source compatibility를 1.4로 바꾸면 된다.
Compiler Compliance level을 1.4로 마지막으로 바꾸어준다.

그리고 실행하기전에 VM 인수를 -ea 를 줘서 사용할 수 있도록 한다.

출처 : http://cafe.naver.com/5758 부관리인(upright00)님

http://java.sun.com/j2se/1.4.2/docs/api/java/lang/System.html


배열 카피하는 메소드.

arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
          Copies an array from the specified source array, beginning at the specified position, to the specified position of the destination array.

요런다... 무슨말인고 하니..

src 의 srcPos 부터 desPos의 length 길이 만큼 dest 배열에다가 복사한다는 뜻.

XPATH 로 검색하면.

속성값은 정확히 일치 하는것을 찾을 수 있고.
내용값은 검색어를 포함한 것을 찾을 수 있다.

예제 추가는 나중에 ㅋ

SWT TEXT EVENT.

Java/이론..2008. 3. 26. 09:15
SWT에서TEXT에다가 엔터키 이벤트를 추가할 경우.
검색창에서 검색어 누르고 바로 엔터키 눌러서 검색하는 것 처럼.

아래 url 을 참고하세요.
http://www.java2s.com/Tutorial/Java/0280__SWT/TextdefaultselectioneventReturnEnterkey.htm

defaultSelection event를 사용하는 예제.
adapter도 제공 되기 때문에 아답터를 사용할지 리스너를 사용할지는 알아서~

아래는 adapter 사용할 경우의 예제.
keywordText = new Text(KeywordSearchGroup, SWT.BORDER | SWT.RIGHT);
keywordText.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
   public void widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent e) {
       System.out.println("widgetDefaultSelected");
   }
  });

Digester 를 사용할시에 commons-digester.jar 파일만 임포트 해서 사용하면 익셉션이 발생한다.

commons-collections.jar, commons-logging.jar, commons-beanutils.jar 파일도 빌드 패스에 추가해주자.

commons 파일들을 다운 받을수 있는 곳.
http://commons.apache.org/

오늘 부터 비스타 sp 1이 다운로드가 가능하답니다.

영어, 독일어, 프랑스어, 일본어, 스패인어.. 이렇게 나왔고.. 4월에나 다른 언어 서비스팩이 나온다는군요.

원문 기사는 아래에..
http://reddevnews.com/news/print.aspx?editorialsid=9668

XML 문서를 검색해야 하는 일이 생겼다.

Digester 와 Lucene 을 사용해서 파싱하고, 색인 만들고, 검색하는 예제.

http://www.ibm.com/developerworks/web/library/j-lucene/


2003년 글이네 -_-; 잘 될려나 몰라..