Kotlin ‐ knowledge를 반복하지 말라[Effective Kotlin Item 19] - thought-corner/Backend-PlayGround GitHub Wiki

knowledge

  • 프로그램에서 두 가지 종류의 knowledge가 있다.
    • 로직 : 프로그램이 어떻게 동작해야 하고 어떻게 보여야 하는지
    • 공통 알고리즘 : 원하는 동작을 달성하기 위한 알고리즘의 구현
  • 이들의 주된 차이는 비즈니스 로직은 시간이 지나면서 바뀌는 반면 공통 알고리즘은 일반적으로 한 번 정의되면 변경되지 않는다는 점이다.
  • 알고리즘은 최적화되거나 다른 알고리즘으로 대체될 수 있지만, 알고리즘 그 자체는 잘 바뀌지 않는 경우가 많다.

모든 것은 변경될 수 있다

  • 프로젝트에서 DB를 사용하다가 어느 날 테이블 이름을 변경했다고 가정하자.
  • 이름이 변경된 테이블이 포함된 SQL 구문도 함께 바꾸지 않는다면 문제가 되는 오류가 발생할 수 있다.
  • 테이블 구조가 한 곳에만 정의되었다면 발생하지 않을 문제이다.
  • knowledge의 반복은 프로젝트 확장성을 떨어뜨리고 프로젝트를 취약하게 만든다.

그렇다면 언제 코드를 반복해도 되는건가?

  • 그들이 같이 변경될 가능성이 높은가? 아니면 따로 변경될 가능성이 높은가? → 이 질문을 신경쓰면 된다.