OOP의 중요한 원칙 중하나가 인터페이스를 잘 만드는 것이다.
아무리 고민을 해봐도 정답이 없고 계속 이리 저리 바꾸며 시간을 보낸적이 많다.
아래는 http://www.nextree.co.kr/p6960/ 에서 Open Close Principle 부분을 인용해 온 글이다.
```
-
확장되는 것과 변경되지 않는 모듈을 분리하는 과정에서 크기 조절에 실패하면 오히려 관계가 더 복잡해 질 수 있습니다. 설계자의 좋은 자질 중 하나는 이런 크기 조절과 같은 갈등 상황을 잘 포착하여 (아깝지만) 비장한 결단을 내릴 줄 아는 능력에 있습니다.
-
인터페이스는 가능하면 변경되어서는 안 됩니다. 따라서 인터페이스를 정의할 때 여러 경우의 수에 대한 고려와 예측이 필요합니다. 물론 과도한 예측은 불필요한 작업을 만들고, 보통 이 불필요한 작업의 양은 상당히 크기 마련입니다. 따라서 설계자는 적절한 수준의 예측 능력이 필요한데, 설계자에게 필요한 또 하나의 자질은 예지력입니다.
-
인터페이스 설계에서 적당한 추상화 레벨을 선택해야 합니다. 우리는 추상화라는 개념에 '구체적이지 않은' 정도의 의미로 약간 느슨한 개념을 갖고 있습니다. 그래디 부치(Grady Booch)에 의하면 ‘추상화란 다른 모든 종류의 객체로부터 식별될 수 있는 객체의 본질적인 특징’이라고 정의하고 있습니다. 즉, 이 '행위'에 대한 본질적인 정의를 통해 인터페이스를 식별해야 합니다.
```
1메서드 1인터페이스로 한다면 인터페이스 관련 OOP원칙에 잘 맞을 것이다.
하지만 뭐하나 만들 때마다 그 많은 인터페이스를 다 적어주는 것도 코딩을 피곤하게 만든다.
모든 상황에서 사용하기 편한 인터페이스는 존재하지 않을 수 있다.
수 많은 상황속에서 가장 자주 쓰고 특수한 상황을 잘 대처해 나갈 수 있는 인터페이스를 만드려면
도메인에 대한 이해가 중요하다.
하지만 도메인에 대한 완전한 이해는 많은 시간이 걸리는 일이다.
FP라면 이러한 상황을 좀 더 유연하게 대처할 수 있을 것이다.
견고함과 목적성의 불확실성은 다소 가질 수 있겠지만 FP를 통해 OOP를 구현하는 것이 쉬워 보인다는 생각이든다.
'개발 방법론' 카테고리의 다른 글
기능 설명서와 우선 순위 (0) | 2017.12.19 |
---|---|
javascript package (0) | 2017.12.10 |