티스토리 뷰


1. 필요한 클래스의 행동을 생각한다.
* 클래스 이름이 중요한 이유
   객체지향 프로그래밍은 '이해하기 쉽다'는 것이 장점 중의 하난입니다. 현실세계의 '사물'의 특징이나 동작이 '클래스'로 표현되기 때문입니다. 그러나 정말로 이해하기 쉽게 하려면 클래스의 이름이 중요합니다. 그러므로 누구라도 그 클래스의 역활을 쉽게 상상할 수 있는 이름을 붙이도록 주의해야 합니다.
* 클래스를 찿는 법
   - 사양서 등에서 기능과 역활을 가진 '명사'를 찿는다. 이 명사가 클래스 후보가 된다. 
   - 명사는 중복되는 경우가 있으므로, 중복되는 것은 제거한다.
   - 값으로 표현할 수 있는 것은 후보에서 제외한다.
   - 환경도 후보에서 제외한다.

단, 값이나 환경일지라도 클래스가 되는 경우도 있습니다.
2. 메인 처리의 기본 구조를 생각 하자.
* 메소드를 나눈 법
  - 하나의 처리 흐름을 하난의 메소드로 정의한다.
  - 메소드의 크기가 20 ~ 30 행을  넘을 것 같으면 복수의 메소드로 분할한다.
  - 다른 메소드와 중복되는 처리는 별도의 처리로서 다른 메소드와 공유한다.
  -  주석이 없으면 의미를 알 수 없는 처리 블록은 그 처리명을 붙인 메소드로 한다.

3. 초기화 방법을 결정한다.
     initialize .. 초기화 메소드  내부 구조, 파라미터 처리 생각

* 파리미터 클래스의 설계 
  - 상수(고정) 값인지 ?
  -  static으로 사용 되어야 하는 값인지?
  - 데이터( 속성 )으로 존재하여야 하는 값인지 ?
4. 메인 처리 내부를 생각한다.
남의 일을 할 필요는 없다.
  클래스나 메소드를 결정할 때 필요한 것은 클래스의 역할을 생각하는 것입니다.
 역할을 생각한다는 것은 다른 클래스의 구현은 생각하지 않는다는 것이기도 합니다.
  클래스를 이용하는 측이 알고자 하는 것은 그 내부가 아닙니다. 클래스는 그 역할에
 대응한 처리만을 하도록 프로그래밍 합니다.

5. 알고리즘을 재고한다.


* 설계는 언제나 간단한게
'간단함'은 소프트웨어 개발 방법인 xp에서도 중요성이 강조되고 있습니다.
xp에서는 '나중에 필요할지도 모르지만 사용하지 않을지도 모르는' 설계를 배제하고,
현시점에서 필요한 최소한의 설계를 수행할 것을 권장하고 있습니다. 이것은 앞으로의 확장성에 대응한 코드를 작성할 때 그로 인해 프로그래밍 시간이 더 걸리거나 쓸데없는 버그를 만들어 내는 경우가 있기 때문입니다. 또한 고생해서 작성한 코드가 앞으로 사용된다는 보장도 없습니다.
오히려 사용되는 않는 경우가 많습니다.
6. 메인 클래스를 완성한다.
      '클래스이 역할' 이라는 관점에서 좀더 생각하기..

7. 나머지 클래스의 관계에 주목한다.
 * 상속과 소유에 대해서 좀더 생각하기 
    - 상속보다는 소유를 사용 - 상속은 소유 보다 변경의 양이 크기 때문에..

8. 나머지 클래스를 완성한다.
 

'웹개발 > Java' 카테고리의 다른 글

Building Java Projects with Maven  (0) 2016.01.16
알기쉬운 프로그래밍 설계 하기  (1) 2011.06.30
DIP 의존관계 역전원칙  (0) 2010.12.30
LSP 리스코프 치환의 원칙  (0) 2010.12.30
SRP 단일 책임의 원칙  (0) 2010.12.30
OCP 개방 폐쇄 원책  (0) 2010.12.30
댓글
댓글쓰기 폼