'주요 책임 영역'에 해당되는 글 1건

  1. 2008.09.24 [rwb] 연습문제 5. 거대한 클래스


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 영겁회귀

티스토리 툴바