Для API (и для многих типов проблем IMO) подход «сверху вниз» для разделения и анализа проблем - это путь.
Однако (и это только мой 2c, основанный на моем личном опыте, поэтому возьмите его с крошкой соли), сосредоточиться на части Javadoc - это хорошо, , но это все еще не так достаточно и не может быть надежной отправной точкой. На самом деле, это очень ориентировано на реализацию. Так что же случилось с дизайном, моделированием и рассуждением, которое должно произойти до этого (каким бы кратким оно ни было)?
Вы должны выполнить какое-то моделирование, чтобы определить сущности (существительные, роли и глаголы), составляющие ваш API. И независимо от того, насколько «гибким» хотелось бы быть, такие вещи не могут быть прототипированы без четкого представления о постановке задачи (даже если это всего лишь 10-килограммовый обзор).
Лучшая отправная точка - указать, что вы пытаетесь реализовать, или, точнее, тип проблем, которые пытается решить ваш API. BDD может помочь (подробнее об этом ниже). То есть что будет предоставлять ваш API (базовые элементы) и кому, какие действия (глаголы) и при каких условиях (контекст) выполнять. Это приводит к тому, что необходимо определить, какие объекты предоставляют эти вещи и под какие роли (интерфейсы, в частности, интерфейсы с единственной, четкой ролью или функцией, а не как универсальные пакеты методов). Это приводит к анализу их сочетания (наследование, состав, делегирование и т. Д.)
Если у вас есть это, тогда вы могли бы быть в хорошей позиции, чтобы начать выполнять некоторые предварительные Javadoc. Затем вы можете начать работать над реализацией этих интерфейсов, этих ролей. Далее следует Javadoc (в дополнение к другой документации, которая может не входить в руководства Javadoc .ie., Инструкции и т. Д.)
Вы начинаете свою реализацию с вариантов использования и проверяемых требований и поведенческих описаний того, что каждая вещь должна делать самостоятельно или в сотрудничестве. BDD был бы чрезвычайно полезен здесь.
В процессе работы вы постоянно проводите рефакторинг, будем надеяться, принимая некоторые метрики (цикломатическая сложность и некоторый вариант LCOM). Эти два говорят вам, где вы должны рефакторинг.
Разработка API не должна по сути отличаться от разработки приложения. В конце концов, API - это утилитарное приложение для пользователя (у которого есть роль в разработке).
В результате вы не должны относиться к разработке API-интерфейсов иначе, чем к общей разработке приложений, интенсивно использующей программное обеспечение. Используйте те же методы, настройте их в соответствии с вашими потребностями (что должен делать каждый, кто работает с программным обеспечением), и у вас все будет хорошо.
Google уже некоторое время загружает на YouTube свою серию видео-лекций "Google Tech Talk". Одна из них - часовая лекция под названием «Как разработать хороший API и почему это важно» . Вы можете также проверить это.
Некоторые ссылки, которые могут вам помочь:
Google Tech Talk "Beyond Test Driven Development: разработка, управляемая поведением": http://www.youtube.com/watch?v=XOkHh8zF33o
Разработка, управляемая поведением: http://behaviour -driven.org /
Сайт-компаньон к книге "Практическое API-дизайн": http://wiki.apidesign.org/wiki/Main_Page
Возвращаясь к основам - Структурированный дизайн # Сплоченность и сцепление: http://en.wikipedia.org/wiki/Structured_Design#Structured_Design