'리팩토링 워크북 연습문제'에 해당되는 글 2건

  1. 2008.09.24 [rwb] 연습문제 5. 거대한 클래스
  2. 2008.09.22 [rwb] 연습문제3. 주석


A. 이 클래스에는 메서드가 왜 이리 많을까?
   많은 수의 인터페이스를 구현하였고, 많은 멤버변수를 가지고 있다.
☞ 이 클래스는 많은 일을 한다. 일부는 상속받은 것이지만, 이 클래스는 많은 책임을 지고 있다.

B. 열겨된 메서드들을 살펴보고, 이들을 5~10개의 주요 책임 영역으로 분류하라.
     1. 멤버변수의 gettter/setter
     2 . 멤버변수의 값을 변경
     3. 멤버변수의 상태를 판단
     4. 이벤트와 관련된 리스닝 메서드
     5. 다른 객체를 생성하고 리턴하는 메서드
     6. 출력관련 메서드
    7. 스트림 관련 메서드
☞ 컬럼(Columns), 편집(Editing), 렌더링(Rendering), 모델선택(Model Selection), 외관(Appearence), 통지(Notification), 기타(Other)

   '책임 영역으로 분류하라' 메서드를 그냥 종류별로 이름별 특징으로 나열해 버렸군.
   메소드의 하는 일등을 파악해서 구분을 할것, 소스가 너무 길어서 그만... 쩝 다시 한번 읽어보자


C. 라이브러리 작성자는 이들 메서드 중 일부를 어떤 방식으로 제거할 수 있을까?
        이 클래스가 맡고 있는 책임의 일부를 갖는 새로운 클래스를 찾아낼 수 있다면, Extract Class를 이용한다.
        해당 클래스의 새로운 하위 클래스 간의 책임을 구분할 수 있다면 Extract SubClass를 이용한다.
        클라이언트가 사용하는 기능들 중 일부를 따로 묶을 수 있다면 Extract Interface를 이용한다.
☞ 주소를 일반화해서 대칭되는 행과 열 함수를 가질 필요가 없도록 할수 있다.
일부책임을 헬퍼 클래스로 빼낼 수도 있겠다. 메서드 중 일부는 단순히 테이블이나 열 모델을
참고하기만 하는 것도 있을 것이다. 외관 속성은 별도로 관리하거나
더 간단한 인터페이스로 관리할 수 있다.
D. 자바의 Object 클래스에는 11개의 메서드가 있다. 스몰토크(SmallTalk) 프로그래머와 이에 대해
   이야기해보고, 왜 이런 차이가 나타나는지, 그리고 이것이 냄새인지 아니지 알아보라.
☞ 1.스몰토크에서는 동적 유영화(dynamic typing)으로 인해 일반 메서드를 더 쉽게 정의할수 있다.
    2.스몰토크는 오랫동안 존재해 왔고 더 많음 메서드들이 작업에 사용되었다.
    3.스몰토크는 해석된 (그리고 더 열린) 환경으로 인해 더많은 실험이 가능했다
신고
Posted by 영겁회귀
Matcher.java

더보기


A. Extract Method를 이용해 match()메서드 안에 주석이 필요 없도록 고쳐 보자.
주석을 제거해도 코드의 가독성을 높히고, 재사용성등을 높이기 위해
Extract Method를 수행한다.

더보기


B. 코드와 관련된 모든 중요한 것을 코드만으로 전달할수 있을까?
아니면 역시 주석은 나름대로의 가치가 있는 것일까?
특별한 케이스(무슨 이유때문에 코드를 다르게 작성했는지, 무엇을 막기 위해 주석을 그러한 방식으로 작성했는지에 대한)일때
는 주석이 필요하다.
특히 비슷한 모양, 이름의 메소드 클래스에서는 주석이 필요하다. (JAVADOC형식)

코드는 일반적으로 어떻게를 매우 잘 표현 할수 있는 반면, 왜에 대해서는 잘 표현하지 못하는 경우가 있다.
특히, 왜 안되는가에 대해서는 거의 표현이 불가능하다.
코드가 다른 사람들에 공개되면, 그 코드를 보는 사람들 중 일부는 추가 정보를 제공하는 JavaDoc 주석을 포함하는 것이 중요하다는
것을 발견하게 된다.


C. 최근에 작성한 코드를 살펴보자. 코드에 주석이 달려있을 가능성이 높다.
코드가 여러분의 의도를 더 직접적으로 반영하도록 만들어서 주석들 중 일부를 없앨수 있을까?

더보기


내용이 긴 블럭을 Extract Method를 실행.
if 분기문안의 내용을 줄여서 상단 주석을 없애도 문맥을 이해하도록 변경한다.

더보기


신고
Posted by 영겁회귀

티스토리 툴바