정신적 복잡성 최소화 개요

정신적 복잡성 최소화 개요

사용자는 라이브러리를 사용하기 전에, 라이브러리의 함수와 추상화에 대한 정신적 모델을 빠르고 정확하게 구축할 수 있어야 해요. 이를 달성하는 가장 좋은 방법은 사용자들이 마주치는 복잡성의 양을 최소화하는 거예요.

정신적 복잡성을 최소화하는 전략은 다음과 같아요:

  • 단순성(Simplicity): 가장 적은 구성 요소로 가장 많은 기능을 제공하는 API를 지향하세요. 기존 Kotlin 타입과 구조를 재사용해 중복을 피하세요. 가능하면 작은 핵심 추상화 집합을 만들고 그 위에 추가 기능을 구축하는 거예요.
  • 가독성(Readability): 코드의 의도가 명확하도록 API를 선언적 스타일로 작성하세요. 새로운 이름을 만들어야 하는 정말 필요한 경우가 아니라면, 추상화 이름은 문제 도메인에서 직접 가져오세요. 기본 데이터 타입은 원래 목적대로 사용하세요. 핵심 기능과 선택 기능을 명확히 구분하세요.
  • 일관성(Consistency): API의 모든 설계 측면에 대해 단일하고 명확한 접근 방식을 유지하세요. 객체 지향이든 함수형이든, 통일된 명명 규칙, 오류 처리 전략, 패턴을 사용하세요.
  • 예측 가능성(Predictability): '놀람 최소화 원칙(principle of least surprise)'을 따르도록 라이브러리를 설계하세요. 기본 설정이 가장 흔한 사용 사례와 일치하게 해서, 사용자가 가장 간단하고 짧은 코드로 작업을 완료할 수 있게 하세요. 일관성과 예측 가능성을 유지하기 위해 라이브러리 확장은 명확하게 규정된 방식으로만 허용하세요.
  • 디버깅 용이성(Debuggability): 정보 추출과 중첩된 함수 호출 탐색을 촉진해서 라이브러리가 사용자의 문제 해결을 돕도록 하세요. 예외가 발생하면 예외의 타입과 내용 모두가 근본 원인과 일치해야 하며, 문제를 효과적으로 진단하고 해결할 수 있는 필요한 모든 세부 정보를 제공해야 해요. 도메인 객체의 상태를 캡처해 출력할 수 있어야 하고, 중간 표현도 볼 수 있어야 해요.
  • 테스트 용이성(Testability): 라이브러리 자체뿐 아니라 그것을 사용하는 코드도 쉽게 테스트할 수 있게 하세요.

다음 절들에서는 이러한 전략을 Kotlin에서 구현하는 방법에 대한 더 자세한 정보를 다룰 거예요.

더 알아보기

이 전략들을 깊이 탐구하려면 다음 절에서 배우는 단순성(Simplicity)부터 시작하면 돼요.