Справочная информация:
Я беру класс в своем университете под названием "Software Constraints". На первых лекциях мы изучали, как создавать хорошие API.
Хорошим примером того, что мы получили очень плохую функцию API, является сокет public static void Select(IList checkRead, IList checkWrite, IList checkError, int microseconds);
в С#. Функция получает 3 списка сокетов и уничтожает их, заставляя пользователя клонировать все сокеты перед подачей их в Select()
. Он также имеет тайм-аут (в микросекундах), который является int, который устанавливает максимальное время ожидания сервером сокета. Пределы этого составляют +/- 35 минут (потому что это int).
Вопросы:
- Как вы определяете API как 'Плохо'?
- Как вы определяете API как "хороший"?
Вопросы для рассмотрения:
- Названия функций, которые трудно запомнить.
- Параметры функции, которые трудно понять.
- Плохая документация.
- Все настолько взаимосвязано, что если вам нужно изменить 1 строку кода, вам действительно нужно будет изменить сотни строк в других местах.
- Функции, которые уничтожают их аргументы.
- Плохая масштабируемость из-за "скрытой" сложности.
- Требуется, чтобы пользователь /dev создавал обертки вокруг API, чтобы его можно было использовать.