습관적으로 만드는 Top-down 분류 코드를 보고, 거부감이 들었다. 객체지향 초기에 스스로 품고 있었던 악습이 다른 사람의 코드를 통해 재현했기 때문인 듯하다. 깜빡 있고 있었는데, 좋은 그림이 있어서 다시 떠올랐다.

JDK와 같이 이미 널리 쓰는 라이브러리안에 혹은 동료들이 이미 작성한 코드에서 가져다 쓸 클래스가 있는데도 무언가 새로 정의할 때!
새로운 클래스는 복잡도라는 이름으로 불리울 수 있다. 레거시가 있는데 새로 무언가 만든다는 것은 중복을 낳는 것이고, 이는 갈림길을 만들어 후일 두 부류의 코드를 양산한다. 그런 것이 쌓이고 쌓이면 복잡도가 가중된다. 나는 동료가 혹은 스스로가 이미 있는 것 외에 새로운 무언가를 만들고자 할 때, 혹은 상속을 통해 확장 계층을 만들 때 다음과 같은 질문을 할 것이다:
대가만 충분하다면야... 복잡도는 확장성(예:프레임워크) 내지는 혁신(예:AOP) 등으로 변모할 수 있으니까.
그림 출처: 과도한 추상화

JDK와 같이 이미 널리 쓰는 라이브러리안에 혹은 동료들이 이미 작성한 코드에서 가져다 쓸 클래스가 있는데도 무언가 새로 정의할 때!
새로운 클래스는 복잡도라는 이름으로 불리울 수 있다. 레거시가 있는데 새로 무언가 만든다는 것은 중복을 낳는 것이고, 이는 갈림길을 만들어 후일 두 부류의 코드를 양산한다. 그런 것이 쌓이고 쌓이면 복잡도가 가중된다. 나는 동료가 혹은 스스로가 이미 있는 것 외에 새로운 무언가를 만들고자 할 때, 혹은 상속을 통해 확장 계층을 만들 때 다음과 같은 질문을 할 것이다:
복잡도를 늘리는 대가는 무엇인가?
대가만 충분하다면야... 복잡도는 확장성(예:프레임워크) 내지는 혁신(예:AOP) 등으로 변모할 수 있으니까.
그림 출처: 과도한 추상화













이올린에 북마크하기
이올린에 추천하기







