knowledge를 반복하여 사용하지 말라
프로그래밍에서의 knowledge란?
의도적인 정보
프로젝트를 진행할 때 정의한 모든 것
ex. 상속을 하는데도 특정 메소드를 오버라이드하지 않게 강제
'해당 메소드가 슈퍼클래스와 동일하게 동작하길 원한다'
프로그램에서 중요한 2개의 knowledge
로직(logic) : 프로그램이 어떤 식으로 동작하는지, 어떻게 보이는지
공통 알고리즘(common algorithm) : 원하는 동작을 하기 위한 알고리즘
두가지의 차이는 시간에 따른 변화
비즈니스 로직은 시간이 지나면서 계속 변화
공통 알고리즘은 한 번 정의된 이후에 크게 변하지 않음
많은 것이 변화하는 상황에서 가장 위험한 것은 knowledge가 반복되어 있는 부분
knowledge의 반복은 프로젝트의 확장성(scalable)을 막고 쉽게 깨지게(fragile) 만든다.
하지만 추출을 통해 knowledge 반복을 줄이면 안 되는 상황도 존재
얼핏보면 knowledge의 반복처럼 보이나, 실은 다른 Knowledge를 나타내는 경우
중요한 것은 단일 책임 원칙
단일 책임 원칙이란?
`클래스를 변경하는 이유는 단 한 가지여야 한다`라는 의미
단일 책임 원칙과 knowledge의 두 가지 사실
서로 다른 곳에서 사용하는 knowledge는 독립적으로 변경할 가능성이 많다. 따라서 비슷한 처리를 하더라도 완전히 다른 knowledge로 취급
다른 knowledge는 분리해 두는 것이 좋다 그렇지 않으면 재사용해서는 안 되는 부분을 재사용하려는 유혹이 발생할 수 있다.
Last updated