본문 바로가기
프로그래밍 놀이터/Kotlin, Coroutine

[Effective Kotlin] Item 19 : Do not repeat knowledge

by 돼지왕 왕돼지 2022. 3. 16.
반응형

이 글은 Effective Java 를 완독하고, Kotlin 을 상용으로 사용하는 개발자 입장에서
Effective Kotlin 글 중 새로운 내용, remind 할 필요 있는 부분, 핵심 내용 등만 추려 정리한 내용입니다.

 

#
project 에서 copy paste 를 하고 있다면 뭔가 잘못된 것이다.

 

#
DRY (Don't Repeat Yourself), WET, SSOT (Single Source of Truth) 등과 연결된다.

 

 

Knowledge

#
2가지 중요한 종류의 지식이 있다.

  1. Logic : 어떻게 동작해야 하고, 어떻게 보여야만 하는지.
  2. 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 가 시사하는 내용은 아래와 같다.

  1. 2개의 다른 출처로부터 발생한 지식은 각자 변화를 요구한다. 우리는 이를 다른 지식으로 분류해야 한다.
  2. 다른 지식은 분리되어야 한다. 서로 다른 지식에 대해 reuse 하지 말자.

 

 

Summary

#
무조건 중복된 코드를 extract 하지 말고, SRP 관점에서 따져보라.

 

 

 

반응형

댓글