kite

Библиотека на Swift с чистым ядром и тестами. Доказательство мастерства на нативном языке Apple, готовое к встраиванию в более крупное приложение.

kite
TL;DR

Библиотека на Swift с чистым ядром и покрытием тестами, готовая ко встраиванию в большее приложение. Доказательство мастерства на родном языке Apple: не приложение, а элемент, на который должны полагаться другие.

Введение

Библиотека - это иной договор, чем приложение, и это отправная точка всего kite. Приложение вы можете исправить постфактум, его баг видит его автор. Библиотека встраивается в чужой код, поэтому ваш баг становится их багом, часто трудным для отслеживания, потому что лежит слоем ниже места, где он взрывается.

Поэтому kite - это не упражнение в написании функций, а упражнение в проектировании договора. Вся его ценность в том, что библиотека обещает снаружи и как она держит это обещание внутри.

Библиотека - это иной договор, чем приложение

Когда код должен встроиться в чужой проект, каждая случайная зависимость становится грузом, который кто-то должен втащить вместе с библиотекой. Каждый публичный API становится обещанием, которое вы потом не сломаете без боли для тех, кто уже на него положился. Это совсем иной образ мышления, чем при приложении, где вы единственный пользователь собственного кода.

kite построена вокруг чистого ядра с ясным публичным API и без случайных зависимостей. То, что видно снаружи, намеренно мало, потому что здесь меньше значит больше: меньшая поверхность - это меньше обещаний, которые нужно держать годами.

➜
Совет

У хорошей библиотеки маленький, продуманный API снаружи и порядок внутри. То, что публично, - это договор, который вы потом не сломаете без боли, поэтому каждый публичный символ нужно добавлять осознанно, а не заодно.

Маленький API, порядок внутри

Граница между тем, что публично, и тем, что внутренне, - самая важная строка во всем коде библиотеки. Внутренности вы можете переписать в любой момент, пока публичный договор остается тем же. Публичный договор вы не тронете, не сломав чужих сборок. Поэтому в kite то, что обращено наружу, узко и продумано, а вся свобода остается внутри.

Это разделение и есть то, что отличает библиотеку от мешка слабо связанных функций. Когда публичная поверхность мала и цельна, пользователь учит ее один раз и может на нее полагаться, а не гадать, какая из десятков функций - та самая.

Тесты как обещание

Покрытие тестами здесь не украшение, а обещание каждому, кто встроит kite в свой проект: эти пути работают и будут работать после следующего изменения. В библиотеке это особенно важно, потому что регрессия болит не вам, а тому, кто построил на вашем коде и не имеет способа заглянуть внутрь.

Тесты одновременно - живая документация того, как библиотеку следует использовать. Тот, кто берет kite, может прочитать тесты и увидеть публичный API в действии, а не додумывать намерение по сигнатурам.

Стороны библиотеки и правящий каждой принцип

СторонаПринцип
Публичный APIмаленький, договор на годы
Внутренностипорядок, свободны к переписыванию
Зависимостиноль случайных
Тестыобещание и живая документация

Больше проектов

Другие работы из той же категории - посмотрите, как мы решаем похожие задачи.

Есть похожий проект?

Напишите нам - смета бесплатна и приходит в течение часа.