기존에 있던 로직에 새로운 코드를 추가를 해야 할때 어떻게 추가를 할지에 대해서 고민이 많다.

잘못된 방식으로 코드를 추가를 하다가 버그나 에러를 만들고 기존에 잘 되던 기능들을 해칠수도 있다.

가능하면 원하는 기능을 기존에 있던 로직을 침범하지 않고, 구현을 해야 한다.

일반적으로 로직을 추가를 할때는 다음과 같은 방법을 사용한다.
1. 기존에 있던 메소드 안에 추가를 한다.
2. 기존에 있던 메소드를 확장한 메소드를 만든다.
3. 기존에 있던 클래스를 확장한 클래스를 만든다.
4. 기존에 있던 클래스를 가지고 있는 클래스를 만든다.

가장 많이 사용하는 방법으로 번호를 매기어 봤다. 대부분 1,2번만 생각을 해서 코드를 확장한다.

OOP를 조금 한다는 사람 중에 상속을 좋아하는 사람은 3번을 가장 많이 고려를 한다.

하지만, 4번을 사용하는 것은 더 많은 가치를 안겨준다. 클래스의 인터페이스만 을 가지고 외부에서 Dependency를 넣어주는 형태로 구현을 하면, 좀더 loosely한 구현도 가능하고 테스트도 쉬워진다.

이런 식으로 구현을 하는 것이다.
구현체 <-- 인터페이스 <-- 인터페이스 wiring 비즈니스 로직 --> 인터페이스 --> 구현체
가운데 있는 비즈니스 로직은 인터페이스하고만 계약을 하기때문에 테스트를 하기가 쉬워질뿐만 아니라 변경에 있어서도 간섭을 하지 않게 된다.

항상 4번만 좋다는 것은 아니다. 클래스 갯수도 많아지고, 불필요하게 디자인이 복잡해질 수가 있다. 확장할 때 영향끼치는 범위에 따라서 더 깊은 고민을 한 끝에 결정을 해야 한다.
Posted by ologist
 TAG ,

블로그 이미지
ologist

공지사항

Yesterday191
Today135
Total34,707

달력

 « |  » 2012.02
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29      

최근에 받은 트랙백

글 보관함