이펙티브 코틀린(추상화 설계)
아이템 27: 변화로부터 코드를 보호하려면 추상화를 사용하라
상수
1 |
|
- 이름을 붙일 수 있다.
- 나중에 값을 쉽게 변경 가능하다.
함수
일반적인 알고리즘을 함수로 추출 하면 코드를 항상 기억해 두지 않아도 된다
함수의 단점
- 함수는 상태를 유지 하지 않는다.
- 함수 시그니처를 변경하면 프로그램 전체에 큰영향을 줄수 있다.
클래스
클래스가 함수보다 더 강력한 이유
- 상태를 가질 수 있고, 많은 함수를 가질 수 있다
- 의존성 주입 프레임워크를 이용하면 클래스 생성을 위임할 수도 있다.
- mock 객체를 활용해서 테스트할 수 있다.
인터페이스
- 코틀린은 거의 모든 것을 인터페이스로 표현한다.
- 인터페이스 뒤에 객체를 숨겨 구현을 추상화하고 사용자가 추상화된 것에만 의존하도록 만들어서 결합을 줄인다.
- 테스트 시 모킹보다 간단하게 인터페이스 페이킹을 사용할 수 있다.
추상화 문제
추상화는 자유를 주지만 코드를 이해하고 수정하기 어렵게 만든다.
너무 많은 것을 숨기면 결과를 이해하는 것 자체가 어려워진다.