Ответ 1
Итак, почему API-документация написана таким образом, чтобы запутать многолетних новичков/хакеров/DIY, таких как я?
Это действительно не предназначалось для написания. Я соглашусь, что, похоже, нелегко использовать документацию по API. Тем не менее, существует много переходов из более старых man
соглашений синтаксиса стиля, к современным соглашениям API/пространств имен.
Как правило, тип человека, который работает с API, будет иметь некоторый фон в разработке или, по крайней мере, "мощный пользователь". Эти типы пользователей используются для таких соглашений синтаксиса, и для документа API больше смысла следовать, чем пытаться создать новые.
Есть ли какой-то таинственный документ где-нибудь, который рассказывает людям, как читать документацию API?
В действительности нет стандартного или RFC, supersekretsyntaxdoc, но есть файл ~ 30 лет для UNIX формат синтаксиса справочной страницы, который широко используется.
Некоторые примеры этого (и ответа на ваш вопрос):
Подчеркнутые слова считаются литералами и набираются так, как они появляются.
Квадратные скобки ([]) вокруг аргумента указывают, что аргумент необязателен.
Эллипсы... используются, чтобы показать, что предыдущий аргумент-прототип может быть повторен.
Аргумент, начинающийся со знака минус - часто воспринимается как некоторый аргумент флага, даже если он появляется в позиции, где может отображаться имя файла.
Почти вся документация, связанная с программированием, использует этот тип соглашения о синтаксисе, от 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/программирования, обычно есть некоторые стандарты. Однако в каждом документе могут быть тонкие различия. Как опытный пользователь или разработчик, вы, как ожидается, сможете читать и понимать документы/фреймворки/библиотеки, которые вы пытаетесь использовать.