Стандартный способ работы с новым API (библиотека, класс и т. Д.) Обычно выглядит так:
- вы думаете о том, какие методы понадобятся пользователю API
- вы реализуете API, который, как вы подозреваете, понадобится пользователю
Итак, вы пытаетесь угадать, как должен выглядеть ваш API. Это очень часто приводит к чрезмерным инженерным разработкам, огромным API, которые, по вашему мнению, будут нужны пользователю, и очень возможно, что большая часть вашего кода вообще не будет использоваться.
Некоторое время назад, может быть, даже несколько лет назад я прочитал какую-то статью, которая сначала способствовала написанию клиентского кода. Я не помню, где я его нашел, но автор указал на несколько преимуществ, таких как лучшее понимание того, как будет использоваться API, что он должен предоставлять и что в основном устарело. Я думаю, что идея заключалась в том, что это согласуется с методологией SCRUM и пользовательскими историями, но на уровне реализации.
Просто из любопытства к моему последнему частному проекту я начал не с реального API (своего рода библиотека инструментария), а с клиентского кода, который будет использовать этот API. Конечно, мой код весь красный, потому что классы, методы и свойства не существуют, и я могу забыть о помощи от intellisense, но я заметил, что после нескольких дней кодирования мое приложение "обладает" всеми основными функциями, и мой библиотечный API " "намного меньше, чем я себе представлял при запуске проекта.
Я не говорю, что если бы кто-то взял мою библиотеку и начал ее использовать, у нее не было бы недостатка в некоторых функциях, но я думаю, что это помогло мне понять, что моя идея этого API была несколько ошибочной, потому что я обычно стараюсь охватить все основы и предоставить методы "на всякий случай". И иногда это сильно кусает меня, потому что я совершил какую-то глупую ошибку в основных функциях, более сосредоточенных на коде, который может понадобиться кому-то.
Итак, я хотел бы спросить вас, пробовали ли вы когда-нибудь такой подход, когда нужно было создать новый API, и помог ли он вам? Это какая-то признанная техника, которая имеет название?