Если интерфейс будет общедоступным, я чувствую, что в проект необходимо внести большую осторожность, потому что изменения в интерфейсе будут трудными, если большая часть кода внезапно сломается в следующем итерации.
Изменения в интерфейсе должны приниматься с осторожностью, поэтому было бы идеально, если бы изменения не потребовались после первоначального выпуска. Это означает, что первая итерация будет очень важна с точки зрения дизайна.
Однако, если требуются изменения, одним из способов реализации изменений в интерфейсе будет устареть старых методов и предоставление пути перехода для старого кода для использования недавно разработанных функций. Это означает, что устаревшие методы будут по-прежнему оставаться на месте, чтобы не допустить взлома кода, использующего старые методы, - это не идеально, так что это «цена, которую нужно заплатить» за то, что вы не сделали это правильно с первого раза.
В связи с этим вчера я наткнулся на Google Talk: Как разработать хороший API и почему он важен Джошуа Блох . Он стоял за разработкой и реализацией библиотек Java Collection и тому подобного, и является автором Effective Java .
Видеоролик длится около часа, и в нем подробно рассматриваются и примеры того, что делает хороший API, почему мы должны создавать хорошо разработанные API, и многое другое. Это хорошее видео для просмотра, чтобы получить некоторые идеи и вдохновение для определенных вещей, на которые стоит обратить внимание при разработке API.