이 글은 Effective Java 를 완독하고, Kotlin 을 상용으로 사용하는 개발자 입장에서
Effective Kotlin 글 중 새로운 내용, remind 할 필요 있는 부분, 핵심 내용 등만 추려 정리한 내용입니다.
#
project 에서 copy paste 를 하고 있다면 뭔가 잘못된 것이다.
#
DRY (Don't Repeat Yourself), WET, SSOT (Single Source of Truth) 등과 연결된다.
Knowledge
#
2가지 중요한 종류의 지식이 있다.
- Logic : 어떻게 동작해야 하고, 어떻게 보여야만 하는지.
- Common Algorithm : 기대한 동작을 하도록 구현된 알고리즘
비지니스 로직 변경 (기획 변경) 이 자주 일어나는데, Logic 은 그에 따라 잘 변하지만, Common Algorithm 은 잘 변하지 않는다.
Everything can change
#
프로그래밍에 이런 말이 있다. "유일한 상수는 변화" (In programming the only constant is change.)
When should we allow code repetition?
#
비슷해보이지만 다른 지식을 표현할 때가 있다.
비슷한 것들을 합칠지 결정은 다음 질문으로 결정하면 좋다. "변화가 일어날 때 같이 변경될까? 각자 변경될까?"
일반적으로 다른 비지니스 룰로부터 발생한 코드는 각자 변경될 가능성이 높다.
(SRP, Single Responsibility Principle)
Single responsibility principle
#
공통 코드를 추출하는 과정에서 SRP (Single Responsibility principle) 을 고려하는 것이 좋다.
이는 "클래스는 한 가지 이유만으로 변경되어야 한다.(A class should have only one reason to change)" 를 말한다.
다시 말하면 둘 이상의 Actor 가 1개의 class 를 변경하면 안 된다는 내용이다.
#
SRP 가 시사하는 내용은 아래와 같다.
- 2개의 다른 출처로부터 발생한 지식은 각자 변화를 요구한다. 우리는 이를 다른 지식으로 분류해야 한다.
- 다른 지식은 분리되어야 한다. 서로 다른 지식에 대해 reuse 하지 말자.
Summary
#
무조건 중복된 코드를 extract 하지 말고, SRP 관점에서 따져보라.
끝
댓글