5 самых распространенных ошибок при проектировании API и как их избежать

5 самых распространенных ошибок при проектировании API и как их избежать

Отличный API упрощает разработку программного обеспечения, поскольку предоставляет все необходимые компоненты, но ошибка в проектировании может разрушить отличный API. Программистам и дизайнерам API крайне важно знать наиболее популярные ошибки конфигурации API и способы их устранения, чтобы создавать API, которые программисты захотят использовать. К счастью, ниже приведены некоторые проблемы API и способы их устранения.

Содержание
5 самых распространенных ошибок при проектировании API и как их избежать

1. Объединение «using namespace» в глобальном расширении заголовков ваших публичных API

Это заставляет любые символы в ссылаемом пространстве имен быть понятными в глобальном пространстве имен и отменяет преимущества использования пространств имен в любом случае. Дополнительно:

  • Невозможно, чтобы клиент вашего заголовочного файла инициировал включение пространства имен, поэтому он вынужден жить с вашим выбором пространства имен, что нежелательно.
  • Функциональный вариант кода может не запуститься, если будет представлена другая форма библиотеки. Кроме того, это происходит, когда новая модель содержит имя, конфликтующее с именем, которое приложение использует из другой библиотеки.
  • «Используя пространство имен», фрагмент кода возникает с того момента, когда он содержится в программе, предоставляющей ваш заголовок, подразумевая, что любой ранее отображенный код, может быть обработан уникальным образом из любой системы, показывающейся после этого. Как вы можете это исправить?

Вы должны избегать использования объявлений пространств имен.в заголовочных файлах. В случае, если вам нужны некоторые элементы пространства имен для работы ваших заголовков, вы можете использовать полностью квалифицированное имя (например, (std:: cout, std:: string) в заголовочных файлах.

2. Не обозначать конструктор Move и оператор присваивания Move в вашем API как No-Except

Обычно для выполнения действия перемещения не требуется бросать. Вы просто забираете многочисленные указатели из исходного кода и направляете их на ваш целевой объект, который гипотетически не должен бросать.

Отсек STL может быть в состоянии использовать конструктор Move для своей активности изменения размера, в случае если этот конструктор не уничтожит свою мощную, невероятную функцию безопасности. Например, std:: vector не использует конструктор move своего API-объекта, если он вызывает исключение. И это происходит из-за того, что исключение направлено в move. Так что обработанная информация может быть потеряна, хотя в конструкторе копирования первая не изменяется.

Поэтому, если вы не рассмотрите ваш конструктор перемещения и ваш оператор присвоения перемещения в вашем API, как no-except, это может серьезно повлиять на производительность для ваших клиентов, если они собираются использовать STL-отсеки. В этой информации мы покажем вам, что класс, который нельзя изменить, использует вдвое больше времени для вставки в вектор и имеет эксцентричные скачки памяти по сравнению с классом, который можно изменить.

Как это исправить?

Just mark the Move Builder and the Motion assignment operator as “no-except.” Class tool { Public: Tool (Tool &&) no-except; };

3. Не помечая не отбрасываемые API как No-Except

Естьесть несколько последствий для маркировки API как no-except, включая специфические усовершенствования компилятора, например, для конструктора перемещения. Но, с точки зрения дизайна API, сложность кода в вашем клиенте уменьшается в случае неудачи вашего API, потому что теперь код не должен содержать различные блоки try/catch. И это имеет два дополнительных преимущества:

  • Клиенту не нужно составлять unit reviews для этих путей кода исключений
  • Число охвата программы для клиентского ПО, скорее всего, будет выше, потому что код менее сложен. Как это исправить?

Просто проверьте API, которые не запустили no-except.

4. Невозможность пометить данные/методы, доступные только для чтения, как константу

Иногда ваш API использует структуру данных ваших клиентов в качестве входных данных. Пометка методов и параметров методов как константных указывает заказчику, что он будет использовать эти данные в режиме только для чтения. Напротив, если вы не помечаете константы методов и параметров ваших API, ваш клиент может быть склонен отдать вам копию данных, поскольку не предоставляет таких гарантий. В зависимости от того, как часто клиентский код обращается к вашему API, влияние на производительность может быть наименьшим или сильным.

Как это исправить?

Если ваш API требует доступа к данным клиента только для чтения, пересмотрите методы и параметры API как const.

5. Не избегать ненужных заголовков

Ненужные заголовочные файлы могут значительно увеличить производительность.раз. Это не только пустая трата времени для разработчиков, которые хотят разрабатывать код локально с помощью ваших API, но и большие затраты за счет использования циклов на вычислительных агентах компиляции, которые, скорее всего, будут кодировать по тысяче раз в день. Кроме того, наличие широких монолитных заголовков повлияет на эффективность систем распараллеливания компиляции, таких как Incredibuild и FastBuild.

Как вы можете это исправить?

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

Заключение

Создание API может быть громоздким, но есть преимущества разработки API с использованием языка C++, который в дальнейшем сопровождает контейнерные адаптеры, такие как C++ priority queue . Это позволяет вам использовать всю мощь стратегий обсуждения C++ для прямого выражения полезности вашей библиотеки/фреймворка.

Знание того, каковы наиболее часто встречающиеся ошибки в API тестах и как их можно устранить, имеет фундаментальное значение в инструментарии каждого разработчика. Хотя существует целый ряд дополнительных ошибок, которые могут возникнуть при тестировании API, это далеко не самые известные и вредные из них. К счастью, если помнить об этих проблемах, то можно переписать абольшое количество дополнительных ошибок с неудачными исправлениями. Если вы правильно решите эти проблемы, разработка API может стать гладким и простым процессом.

YouTube видео: 5 самых распространенных ошибок при проектировании API и как их избежать


Вопросы и ответы по теме: “5 самых распространенных ошибок при проектировании API и как их избежать”

Как правильно проектировать REST API?

**В этой статье мы поговорим о лучших практиках по разработке REST API.**1. Немного терминов 2. Используйте kebab-case для URL. 3. Используйте camelCase для параметров 4. Используйте множественное число для коллекций 5. URL должен начинаться с коллекции и заканчиваться идентификатором 6. Не используйте глаголы в URL ресурсов

Как правильно сделать API?

  1. Используйте глаголы в URL.
  2. Выделяйте новые сущности
  3. Используйте один идентификатор ресурса *
  4. Все ресурсы во множественном числе
  5. Используйте HTTP-статусы по максимуму
  6. Модификаторы получения ресурса
  7. Выберите одну структуру ответов
  8. Все параметры и json в camelCase.

Сохраненная копия

Какие есть подходы к проектированию API?

На текущий момент существует три популярных подхода в разработке API веб-приложений: REST, SOAP и GraphQL.

Какие методы можно применить в REST API?

Традиционно архитектура REST API использует четыре метода:* GET— чтение информации. Запросы, сформированные таким методом, отвечают за простую передачу данных с сервера, но не удаляют и не исправляют их.

  • DELETE— удаление данных.
  • POST— создание или регистрация записей.
  • PUT— изменение или обновление данных.

Что такое проектирование API?

API или Application Programming Interface — это описание способа взаимодействия программ. Если быть точнее, это набор классов, интерфейсов, структур данных, которые объявлены программой. С помощью них можно заставить программу выполнять действия.

В чем разница API и REST API?

REST API — это способ взаимодействия сайтов и веб-приложений с сервером. Его также называют RESTful. Термин состоит из двух аббревиатур, которые расшифровываются следующим образом. API (Application Programming Interface) — это код, который позволяет двум приложениям обмениваться данными с сервера.