api - framework - swagger documentation
¿Cómo leer la documentación de API para newbs? (4)
Estoy leyendo la guía de scripting JavaScript para Photoshop, Illustrator e InDesign. La API es realmente difícil de leer porque supone que sé ciertas convenciones de taquigrafía. El problema no está limitado a esta guía de scripting en particular. Podría enumerar docenas que presentan el mismo problema.
Cuando leo una API como alguien que no vive en código las 24 horas del día, quiero buscar algo y ver un ejemplo simple del código en acción en la forma más básica. Pero a menudo no es fácil darle sentido al principio.
Aquí hay un ejemplo. Estoy buscando cómo cambiar el color de un elemento por JavaScript en Photoshop. Entonces busco el PDF y encuentro "fillColor". Encuentro esto en los documentos:
fillPath
([fillColor]
[, mode]
[, opacity]
[, preserveTransparency] [, feather]
[, wholePath] [, antiAlias])
Cuando leo esto, a primera vista no tiene sentido. ¿Por qué hay corchetes y cómo sabría que se supone que no debo usarlos en una implementación? ¿Por qué las comas están entre paréntesis? Sé cómo se vería el código de una muestra que encontré, que es esta:
myPath.fillPath(myNewColor)
Si no hubiera visto el ejemplo, NUNCA deduciría del código API que así es como debe verse este método cuando se implementa. Otra persona señaló que un ejemplo extendido para este método podría verse así:
myPath.fillPath(mynewColor, {
mode: RGB,
opacity: .5
})
DE ACUERDO. Veo que puedo omitir los parámetros opcionales implícitos. Multa. Pero, de nuevo, NUNCA lo hubiera adivinado de la API.
Entonces, ¿hay algún documento misterioso en alguna parte que le diga a la gente cómo leer la documentación de la API? ¿Por qué está escrito así? ¿Qué conocimiento previo supone que tengo? ¿Por qué es así y qué puedo hacer para dejar de preguntarme sobre eso y "obtenerlo" para poder leer e implementar la próxima API?
Entonces, ¿por qué la documentación de la API está escrita de tal manera que confunde perennes newbs / hackers / DIYers como yo?
Los corchetes significan que la propiedad es opcional. Sin embargo, tenga en cuenta que si desea establecer la propiedad soem en el rango nTh, debe declarar las propiedades para el encabezado o declararlas como indefinidas:
fillPath() //good
fillPath ( someFillColor ) //good
fillPath ( someFillColor, mode ) //good
fillPath ( undefined, mode ) //good
fillPath ( mode ) //bad
fillPath ( undefined ) //really bad
Los documentos API para lenguajes con tipado dinámico pueden no ser muy significativos si no se escriben con cuidado, así que no te sientas mal por eso, incluso el desarrollador más avezado puede tener dificultades para tratar de comprenderlos.
Sobre los corchetes y tal, generalmente hay una sección de convenciones de código que debe explicar el uso exacto fuera de los ejemplos literales; aunque EBNF , Regex y Railroad Diagrams son casi omnipresentes, por lo que debe familiarizarse con ellos para comprender la mayoría de las anotaciones.
Tuve la misma pregunta hace un tiempo y alguien me indicó la EBNF .
Tiene sentido porque la programación puede usarse para crear resultados potencialmente ilimitados. La documentación no puede mostrar un ejemplo para cada caso posible. Un buen ejemplo de uso común lo ayudo, pero una vez que puede leer la sintaxis subyacente, puede crear su propio código.
Entonces, ¿por qué la documentación de la API está escrita de tal manera que confunde perennes newbs / hackers / DIYers como yo?
Realmente no está destinado a ser escrito de esa manera. Estoy de acuerdo en que no parece ser fácil de usar en la documentación de API. Sin embargo, hay muchas diferencias entre las convenciones de sintaxis del estilo del man
más viejo man
convenciones modernas de API / espacio de nombres.
Normalmente, el tipo de persona que trabaja con API tendrá algunos antecedentes en el desarrollo o, al menos, un "usuario avanzado". Estos tipos de usuarios están acostumbrados a tales convenciones de sintaxis y tiene más sentido que siga el documento de la API que tratar de crear otros nuevos.
¿Hay algún documento misterioso en alguna parte que le diga a la gente cómo leer la documentación de la API?
Realmente no existe un estándar, o RFC, supersekretsyntaxdoc en cualquier lugar, sin embargo, existe un archivo ~ 30 años para el formato de sintesis de la página del manual de UNIX , que es de uso generalizado.
Algunos ejemplos de esto (y responder a su pregunta) serían:
Las palabras subrayadas se consideran literales y se escriben tal como aparecen.
Los corchetes ([]) alrededor de un argumento indican que el argumento es opcional.
Las elipsis ... se usan para mostrar que el argumento anterior prototipo puede repetirse.
Un argumento que comienza con un signo menos - a menudo se considera que significa algún tipo de argumento de indicador, incluso si aparece en una posición donde podría aparecer un nombre de archivo.
Casi toda la documentación relacionada con la programación utiliza este tipo de convención de sintaxis, desde Python , páginas man , javascript libs ( Highcharts ), etc.
Desglosando tu ejemplo de la API de Adobe
fillPath
([fillColor]
[, mode]
[, opacity]
[, preserveTransparency] [, feather]
[, wholePath] [, antiAlias])
Vemos que fillPath()
(una función) toma argumentos opcionales fillColor, mode, opacity, preserveTransparency, feathe, wholePath
o antiAlias
. Al llamar a fillPath()
, puede pasar de ninguno a todos los parámetros. Las comas dentro del []
opcional significan que si este parámetro se usa además de otros, necesita la coma para separarlo. (Algunas veces, el sentido común, pero a veces algunos lenguajes, como VB, necesitan explícitamente esas comas para delinear correctamente qué parámetro falta). Como no se enlazó con la documentación (y no puedo encontrarla en la página de scripts de Adobe ), realmente no hay forma de saber qué formato espera la API de Adobe. Sin embargo, debe haber una explicación en la parte superior de la mayoría de la documentación que explique las convenciones utilizadas dentro.
Entonces, esta función probablemente podría usarse de muchas maneras:
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
Una vez más, generalmente hay algunos estándares en toda la documentación relacionada con API / programación. Sin embargo, en cada documento, podría haber diferencias sutiles. Como usuario avanzado o desarrollador, se espera que pueda leer y comprender los documentos / marcos / bibliotecas que intenta utilizar.