Итак, почему API-документация написана таким образом, чтобы путать многолетних новичков / хакеров / DIY, таких как я?
Это действительно не должно быть написано именно так. Я соглашусь, что, похоже, нелегко использовать документацию по API. Тем не менее, существует много переходов из старых синтаксических соглашений стиля man
, к современным соглашениям об API / пространствах имен.
Как правило, тип человека, который работает с API, будет иметь некоторый опыт в разработке или, по крайней мере, «полномочным пользователем». Эти типы пользователей используются для таких соглашений синтаксиса, и для документа API имеет смысл больше, чем пытаться создать новые.
Есть ли какой-то таинственный документ где-то, что говорит людям, как читать документацию по API ?
На самом деле не существует стандарта, или RFC, supersekretsyntaxdoc, лежащего где угодно, однако существует файл с 30-летним файлом формата UNIX man-страницы , который широко используется [30].
Некоторые примеры этого (и ответа на ваш вопрос) были бы следующими:
Подчеркнутые слова считаются литералами и набираются так, как они появляются.
Квадратные скобки ([]) вокруг аргумента указывают, что аргумент не является обязательным.
Эллипсы ... используются, чтобы показать, что предыдущий аргумент-прототип может быть повторен.
Аргумент начиная с знака минус - часто воспринимается как некоторый аргумент флага, даже если он появляется в позиции, где может отображаться имя файла.
blockquote>A Почти вся документация, связанная с программированием, использует этот тип соглашения о синтаксисе, из Python , man pages , javascript libs ( Highcharts ) и т. д.
Нарушение вашего примера из Adobe API
fillPath ([fillColor] [, mode] [, opacity] [, preserveTransparency] [, feather] [, wholePath] [, antiAlias])
Мы видим, что
fillPath()
(функция) принимает необязательные аргументыfillColor, mode, opacity, preserveTransparency, feathe, wholePath
илиantiAlias
. ВызываяfillPath()
, вы можете передать нигде ни от одного, ни от всех параметров к нему. Запятые в необязательном[]
означают, что если этот параметр используется в дополнение к другим, вам нужна запятая, чтобы разделить его. (Здравый смысл иногда, конечно, но иногда некоторые языки, такие как VB, явно нуждаются в этих запятых, чтобы правильно определить, какой параметр отсутствует!). Поскольку вы не ссылались на документацию (и я не могу найти ее на странице скриптов Adobe ), действительно не существует способа узнать, какой формат ожидает Adobe API. Однако должно быть объяснение в верхней части самой документации, объясняющей соглашения, используемые внутри.Таким образом, эту функцию можно было бы использовать многими способами:
fillPath() //Nothing passed fillPath(#000000,RGB) // Black, in RGB mode fillPath(#000000,RGB,50) // Black, in RGB mode, half opacity //Now it gets tricky, this might ALSO be acceptable: fillPath(#000000,50) // Black, no mode, half opacity //OR fillPath(#000000,,50) // Black, no mode, half opacity
Опять же, обычно есть некоторые стандарты во всех документах, касающихся API / программирования. Однако в каждом документе могут быть тонкие различия. Как опытный пользователь или разработчик, вы, как ожидается, сможете читать и понимать документы / фреймворки / библиотеки, которые вы пытаетесь использовать.