Knowledge
Knowledge 를 반복하여 사용하지 말라
cleancode kotlin
Knowledge
프로젝트에서 이미 있던 코드를 복사해서 붙여넣고 있다면, 무언가가 잘못된 것이다.
- 실용주의 프로그래머에서 Don't Repeat Yourself, DRY 규칙으로 표현하고 있다.
- WET 안티패턴이라고도 불린다.
- DRY 는 또한 SSOT(Single Source of Truth) 라는 이름으로도 알려져 있다.
프로그래밍에서 knowledge
는 넓은 의미로 의도적인 정보를 뜻한다. knowledge 의 종류는 굉장히 다양하다.
- 알고리즘의 작동 방식
- UI 의 형태
- 우리가 원하는 결과 등
Most important knowledge
- Logic: 프로그램이 어떠한 식으로 동작하는지와 프로그램이 어떻게 보이는지
- Common Algorithm: 원하는 동작을 하기 위한 알고리즘
둘의 가장 큰 차이점은 시간에 따른 변화 이다. 로직은 시간에 따라 변하지만 알고리즘은 한 번 정의된 이후에는 크게 변하지 않는다.
Keep changing knowledge
프로젝트의 knowledge 는 계속해서 변화한다. 변화의 몇 가지 이유는 다음과 같다.
- 사용자의 요구는 계속 변화한다.
- 디자인 표준이 변화했다.
- 플랫폼, 라이브러리, 도구 등이 변화한다.
슬랙(slack)은 원래 글리치라는 온라인 게임이었으나 소비자는 게임의 커뮤니케이션 방식을 굉장히 마음에 들어했다. 그래서 현재의 슬랙으로 변화하게 되었다.
변화할 때 가장 큰 적은 knowledge 가 반복되는 부분(= 중복) 이다.
Redundancy is a harm
- 중복 코드를 변경하는 것은 무엇보다 귀찮다.
- 코드를 변경하는 과정에서 실수로 누락하여 변경되지 못한 부분이 생길 수 있다.
knowledge 의 반복은 확장성(scalable)을 막고 쉽게 깨지게(fragile) 만든다. 이러한 해결책으로는 추상화(abstraction) 를 사용하는 것이 있다.
코드의 반복이 허용되는 경우는 "함께 변경될 가능성이 높은가" or "따로 변경될 가능성이 높은가" 로 어느 정도 결정할 수 있다.
- 서로 다른 곳에서 사용하는 knowledge 는 독립적으로 변경할 가능성이 많다.
- 다른 knowledge 는 분리해 두는 것이 좋다.
References
- Effective Kotlin / Marcin Moskala 저 / 인사이트