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