Skip to content

인지 복잡도 최소화 개요

사용자는 라이브러리를 사용하기 전에 해당 라이브러리의 기능과 추상화에 대한 멘탈 모델(mental model)을 빠르고 정확하게 구축할 수 있어야 합니다. 이를 달성하는 가장 좋은 방법은 사용자가 마주하는 복잡도를 최소화하는 것입니다.

인지 복잡도를 최소화하기 위한 전략은 다음과 같습니다:

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

다음 섹션에서는 Kotlin에서 이러한 전략을 구현하는 방법에 대해 더 자세한 정보를 제공합니다.

다음 단계

이러한 전략을 심도 있게 탐구하려면, 다음 섹션인 단순성(simplicity)에 대해 배우는 것부터 시작할 수 있습니다.

다음 단계로 진행하기