My-Book(History)

켄트 벡의 구현 패턴 - 프로그래밍 이론

아롱사태남 2016. 10. 14. 15:34
반응형

순성

- 프로램을 최대한 단순화하라

- 의미 없는 코드는 모두 제거하라.

- 설계 시 에도 고도한 요소는 모두 빼고, 요구 사항을 분석해서 꼭 필요한 사항만을 뽑아내라.

- 과도한 복잡도를 제거하면 코드를 새로운 관점에서 바라볼 수 있다.

 

 

유연성

- 프로그램은 유연해야 하지만, 프로그램이 발전하는 방향으로 유연해야 한다.

- 추측에 의거해 설계에 유연성을 부여하는 것보다는 단순성을 유연하게 적용한 후 테스트를 철저하게 하는 편이 더욱 효과적이다.

- 유연성이 있으면서도 당장 이득을 얻을 수 있는 패턴을 사용하라.

- 당장 비용이 들어가지만, 앞으로 이득을 얻을 수 있을지 불확실한 패턴의 경우에는 일단 사용을 자제하는 편이 좋다.

 

 

구현 패턴의 근간이 되는 원칙

1. 지역적 변화 : 코드를 수정할 때 함께 바꿔야 하는 부분을 최소화하라. (지역 구간만을 변화하라는 의미인거 같다)

   2. 최소 중복 (지역적 변화 원치 근거 [0] )

- 같은 코드가 여러 곳에서 반복된다면, 그중 하나를 바꿀 때 다른 중복된 코드들도 모두 바꿔야 할지 여부를 결정해야 한다.

- 프로그램상의 어떤 개념을 수정했을 때 2개 이상의 클래스 계층을 수정해야 한다면 지역적 변화의 원칙을 위배하는 것이다.

- 프로그램을 여러 작은 부분-짧은 구문, 짧은 메소드, 작은 객체, 작은 패키지-으로 나누는 것이다.

 

3. 로직과 데이터의 결합 (지역적 변화 원치 근거 [1] )

- 로직과 데이터를 함께 유지하는 것이다.

- 데이터와 그 데이터를 처리하는 로직을 밀접하게 가급적 같은 메소드 혹은 같은 객체 내에, 최소한 같은 패키지 내부에 배치하라

 

4. 변화율

- 하나의 객체에 있는 모든 필드는 가급적 함께 변해야 한다.

- 특정 메소드가 수행될 때만 사용되는 필드는 그 메소드의 지역 변수로 선언되어야 한다.

 

ex)

setAmount(int value, string currency) {

this.value = vlaue;

this.currency = currency;

}

위 코드는 다음과 같이 바꿀 수 있다.

 

setAmount(int value, string currency) {

this.value = new Money(value, currency);

}

 

 

 

반응형