Простота
Чем меньше понятий нужно понять пользователям и чем яснее они изложены, тем проще, вероятно, будет их мысленная модель. Этого можно добиться, ограничив количество операций и абстракций в API.
Убедитесь, что видимость объявлений в вашей библиотеке настроена правильно, чтобы детали внутренней реализации не попадали в публичный API. Пользователям должны быть доступны только те API, которые явно предназначены и документированы для публичного использования.
В следующей части руководства мы обсудим рекомендации по обеспечению простоты.
Используйте режим явного API
Мы рекомендуем использовать функцию режима явного API компилятора Kotlin, которая заставляет вас явно указывать свои намерения при проектировании API библиотеки.
В режиме явного API необходимо:
Добавлять модификаторы видимости к объявлениям, чтобы сделать их публичными, вместо того чтобы полагаться на публичную видимость по умолчанию. Это позволяет убедиться, что вы обдумали, что именно предоставляете в составе публичного API.
Указывать типы всех публичных функций и свойств, чтобы предотвратить непреднамеренные изменения API из-за выведенных типов.
Повторно используйте существующие понятия
Один из способов ограничить размер API — повторно использовать существующие типы. Например, вместо создания нового типа для длительности можно использовать kotlin.time.Duration. Такой подход не только упрощает разработку, но и улучшает взаимодействие с другими библиотеками.
Будьте осторожны, полагаясь на типы сторонних библиотек или типы, специфичные для платформы, поскольку они могут связать вашу библиотеку с этими элементами. В таких случаях затраты могут перевесить преимущества.
Повторное использование распространённых типов, таких как String, Long, Pair и Triple, может быть эффективным, но это не должно мешать вам разрабатывать абстрактные типы данных, если они лучше инкапсулируют логику конкретной предметной области.
Определите базовый API и развивайте его
Ещё один способ добиться простоты — определить небольшую концептуальную модель, основанную на ограниченном наборе основных операций. После того как поведение этих операций будет чётко задокументировано, можно расширить API, разработав новые операции, которые непосредственно используют эти основные функции или объединяют их.
Например:
В API Kotlin Flows распространённые операции, такие как
filterиmap, построены на основе операцииtransform.В API времени Kotlin функция
measureTimeиспользуетTimeSource.Monotonic.
Хотя часто полезно строить дополнительные операции на основе этих основных компонентов, это не всегда необходимо. Возможно, вам удастся добавить оптимизированные или платформенные варианты, расширяющие функциональность или более гибко адаптирующиеся к различным входным данным.
Пока пользователи могут решать нетривиальные задачи с помощью основных операций и перерабатывать свои решения, добавляя новые операции без изменения поведения, простота концептуальной модели сохраняется.
Следующий шаг
В следующей части руководства вы узнаете о читабельности.
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/api-guidelines-simplicity.html