이펙티브 코틀린 아이템 27: 변화로부터 코드를 보호하려면 추상화를 사용하라

이펙티브 코틀린(추상화 설계)

아이템 27: 변화로부터 코드를 보호하려면 추상화를 사용하라

상수

1
2
3

const val MAX_THREADS = 10

  • 이름을 붙일 수 있다.
  • 나중에 값을 쉽게 변경 가능하다.

함수

일반적인 알고리즘을 함수로 추출 하면 코드를 항상 기억해 두지 않아도 된다

함수의 단점

  • 함수는 상태를 유지 하지 않는다.
  • 함수 시그니처를 변경하면 프로그램 전체에 큰영향을 줄수 있다.

클래스

클래스가 함수보다 더 강력한 이유

  • 상태를 가질 수 있고, 많은 함수를 가질 수 있다
  • 의존성 주입 프레임워크를 이용하면 클래스 생성을 위임할 수도 있다.
  • mock 객체를 활용해서 테스트할 수 있다.

인터페이스

  • 코틀린은 거의 모든 것을 인터페이스로 표현한다.
  • 인터페이스 뒤에 객체를 숨겨 구현을 추상화하고 사용자가 추상화된 것에만 의존하도록 만들어서 결합을 줄인다.
  • 테스트 시 모킹보다 간단하게 인터페이스 페이킹을 사용할 수 있다.

추상화 문제

추상화는 자유를 주지만 코드를 이해하고 수정하기 어렵게 만든다.

너무 많은 것을 숨기면 결과를 이해하는 것 자체가 어려워진다.

참조