OOP의 중요한 원칙 중하나가 인터페이스를 잘 만드는 것이다.

아무리 고민을 해봐도 정답이 없고 계속 이리 저리 바꾸며 시간을 보낸적이 많다.

아래는 http://www.nextree.co.kr/p6960/ 에서 Open Close Principle 부분을 인용해 온 글이다.

```

 

  1. 확장되는 것과 변경되지 않는 모듈을 분리하는 과정에서 크기 조절에 실패하면 오히려 관계가 더 복잡해 질 수 있습니다. 설계자의 좋은 자질 중 하나는 이런 크기 조절과 같은 갈등 상황을 잘 포착하여 (아깝지만) 비장한 결단을 내릴 줄 아는 능력에 있습니다.

  2. 인터페이스는 가능하면 변경되어서는 안 됩니다. 따라서 인터페이스를 정의할 때 여러 경우의 수에 대한 고려와 예측이 필요합니다. 물론 과도한 예측은 불필요한 작업을 만들고, 보통 이 불필요한 작업의 양은 상당히 크기 마련입니다. 따라서 설계자는 적절한 수준의 예측 능력이 필요한데, 설계자에게 필요한 또 하나의 자질은 예지력입니다.

  3. 인터페이스 설계에서 적당한 추상화 레벨을 선택해야 합니다. 우리는 추상화라는 개념에 '구체적이지 않은' 정도의 의미로 약간 느슨한 개념을 갖고 있습니다. 그래디 부치(Grady Booch)에 의하면 ‘추상화란 다른 모든 종류의 객체로부터 식별될 수 있는 객체의 본질적인 특징’이라고 정의하고 있습니다. 즉, 이 '행위'에 대한 본질적인 정의를 통해 인터페이스를 식별해야 합니다.

```

 

1메서드 1인터페이스로 한다면 인터페이스 관련 OOP원칙에 잘 맞을 것이다.

하지만 뭐하나 만들 때마다 그 많은 인터페이스를 다 적어주는 것도 코딩을 피곤하게 만든다.

모든 상황에서 사용하기 편한 인터페이스는 존재하지 않을 수 있다.

수 많은 상황속에서 가장 자주 쓰고 특수한 상황을 잘 대처해 나갈 수 있는 인터페이스를 만드려면

도메인에 대한 이해가 중요하다.

하지만 도메인에 대한 완전한 이해는 많은 시간이 걸리는 일이다.

FP라면 이러한 상황을 좀 더 유연하게 대처할 수 있을 것이다.

견고함과 목적성의 불확실성은 다소 가질 수 있겠지만 FP를 통해 OOP를 구현하는 것이 쉬워 보인다는 생각이든다.

 

 

'개발 방법론' 카테고리의 다른 글

기능 설명서와 우선 순위  (0) 2017.12.19
javascript package  (0) 2017.12.10

+ Recent posts