Що спільного для великих API? [зачинено]


15

Що це за чудові API, що робить їх чудовими? Я вважаю, що дотримання мантри "робити одне і робити це добре" - це хороший знак, і це є гарним відображенням проблемної області, але що спільного між великими API?


1
Чи можете ви перерахувати якийсь "чудовий API"? Особисто мене регулярно позитивно дивує Qt.
БенджамінB

Рамки веб - додаток Sinatra мій улюблений API. Це робить одне і робить це добре.
dodgy_coder

Відповіді:


17

Ви повинні бути обережними, щоб не додавати новий словник лише заради вашого API. Мої улюблені API пояснюють мені речі, які я вже розумію. По цих лініях:

Не додайте занадто багато абстракцій поверх того, що ви будуєте. Не ускладнювати.

Мені вже доводиться думати про півтора десятка шарів абстракції. Не змушуйте мене думати про зайві шари. Не дайте мені занадто багато нового, щоб дізнатися, що не додасть значення моїй кінцевій цілі. Наприклад, уникайте використання власного спеціального класу файлів, який працює по-іншому, тоді як тип файлу мови просто змушує вас вважати ваш шлях кращим, ніж загальноприйнятий спосіб. Дотримуйтесь загальноприйнятого способу, принаймні у своїх інтерфейсах, на краще або на гірше.

Дотримуйтесь конкретних ідей

Наприклад, не намагайтеся приховати той факт, що "модельна" частина вашого MVC-фрейму є передньою частиною бази даних. Скористайтеся загальновідомою лексикою навколо "баз даних". Я знаю, що таке іноземні ключі. Я знаю, що таке рядки та стовпці. Поговоріть зі мною в цих умовах.

Не абстрагуйте необхідних знань

Подібно до роботи з конкретними ідеями. Не приховуйте того, що ми маємо справу з файлами чи базами даних або рядками в базах даних. Я знаю ці речі. Якщо я маю справу з контейнером, як List, є хороший шанс, що мені потрібно знати алгоритмічну складність загальних операцій. Ви можете спростити це багато, просто сказавши мені його "пов'язаний список" або "масив". Величезний набір ідей раптом з’явиться у відповідь на те, що ви робите, і це раптом має сенс. Не створюйте власний набір ідей, які мені доведеться вивчити, коли я вже знайду багатий і корисний набір термінології, щоб застосувати проблему.

Скоротіть кількість потрібних мені термінів у своєму словниковому запасі

Якщо я використовую ваш API для відкриття файлів зображень будь-якого типу, мені не доведеться дуже думати про pngs vs gifs vs jpgs. Ти зробиш це для мене. Його основна компетенція, а не моя. Я маю деяке розпливчасте розуміння того, що ти маєш якусь магію зробити це для мене.


10

Корисний API має таке:

  • Коротка та ретельна документація. Якщо я шукаю, як реалізувати завдання, я можу дізнатися, чи має API це зробити, протягом декількох хвилин. Це досягається стислістю тексту та компонуванням ресурсу. Документація наводить приклади того, як ним користуватися, а також не дає припущень щодо читацької аудиторії.
  • Велика, активна громада. Мені страшно, коли я знаходжу форуми, канали IRC, списки розсилки тощо. Активні учасники готові допомогти новим хлопцям. Я розумію, що зазвичай це стосується великих проектів, але все-таки було б чого прагнути.
  • Послідовність. Коли я фактично використовую API, я не хочу ні в якому разі шокуватись, коли я викликаю метод, або виявляю, що цей метод Xзовсім відрізняється від конвенції, встановленої рештою API.

Консистенція повинна бути ні. 1 річ. Документи
посідають

Послідовність застосовується і до мов: моя неприязнь до PHP та JavaScript в основному полягає в їх недостатній послідовності.
dodgy_coder


1
  • Зробіть одне і зробіть це чудово.
  • Простий у використанні, важко використовувати.
  • Легко розширюється.
  • Добре задокументовано.
  • Послідовний стиль.

0

Це питання розглядається у "Практичному дизайні API: Сповіді архітектора Java Framework" Ярослава Тулача з команди NetBeans.


-1

Найпростіший корисний інтерфейс і хороші умови імен.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.