Розробка хорошого API - це мистецтво. Хороший API цінується навіть через час. На мою думку, на абстрактно-конкретній лінії не повинно бути загальних упереджень. Деякі параметри можуть бути такими ж конкретними, як дні тижня, деякі потребують розробки для розширюваності (і досить нерозумно робити їх конкретними, наприклад, частинами назв функцій), а інші можуть піти ще далі і для того, щоб мати елегантний API потрібно забезпечити зворотні дзвінки чи навіть конкретну доменну мову допоможе боротися зі складністю.
Під Місяцем рідко трапляються нові речі. Погляньте на рівень техніки, особливо на встановлені стандарти та формати (наприклад, багато речей можна змоделювати після каналів, описи подій були розроблені в ical / vcal). Зробіть свій API легко добавним, коли часті та всюдисущі сутності є конкретними, а передбачені розширення - словниками. Існує також кілька усталених моделей поводження з конкретними ситуаціями. Наприклад, обробка HTTP-запиту (і подібного) може бути змодельована в API з об'єктами Request and Response.
Перш ніж розробляти API, мозковий штурм стосується аспектів, включаючи ті, які не будуть включені, але ви повинні знати. Прикладами таких є мова, напрям написання, кодування, локаль, інформація про часовий пояс тощо. Зверніть увагу на місця, де можуть з’являтися кратні: використовувати список, а не єдине значення для них. Наприклад, якщо ви шукаєте API для системи відеочатів, ваш API буде набагато кориснішим, якщо ви вважаєте, що N учасників, а не лише двоє (навіть якщо ваші характеристики на даний момент такі).
Іноді бути абстрактним допомагає різко зменшити складність: навіть якщо ви спроектуєте калькулятор для додавання лише 3 + 4, 2 + 2 та 7 + 6, реалізувати X + Y може бути набагато простіше (з технічно можливими межами на X та Y, і додайте ADD (X, Y) до вашого API замість ADD_3_4 (), ADD_2_2 (), ...
Загалом, вибір того чи іншого способу - це лише технічна деталь. Ваша документація повинна конкретно описувати випадки частого використання.
Що б ви не робили з боку структури даних, введіть поле для версії API.
Підводячи підсумок, API повинен мінімізувати складність при роботі з вашим програмним забезпеченням. Щоб оцінити API, рівень викритої складності повинен бути адекватним. Вирішення форми API багато в чому залежать від стабільності проблемної області. Таким чином, слід зробити деяку оцінку, в якому напрямку буде рости програмне забезпечення та його API, оскільки ця інформація може впливати на рівняння складності. Також розробка API є для того, щоб люди зрозуміли. Якщо є якісь хороші традиції в галузі програмних технологій, в якій ви перебуваєте, намагайтеся не сильно відступати від них, оскільки це допоможе зрозуміти. Враховуйте, для кого ви пишете. Більш просунуті користувачі оцінять загальність та гнучкість, тоді як тим, хто має менше досвіду, може бути зручніше з конкретиками. Однак піклуйтеся про більшість користувачів API,
Щодо літератури, я можу порекомендувати провідних програмістів "Красивого коду" пояснити, як вони думають Енді Орам, Грег Вілсон, оскільки я думаю, що краса полягає у сприйнятті прихованої оптимальності (і придатності до певної мети).