2009-11-09 13 views
15

Es válida JavaScript para escribir algo como esto:funciones de JavaScript A La Python Las cadenas de documentación

function example(x) { 
    "Here is a short doc what I do."; 
    // code of the function 
} 

La cadena realidad no hace nada. ¿Hay alguna razón por la que uno no debería comentar sus funciones en JavaScript de esta manera?

Dos puntos que se me ocurrieron durante wiriting la pregunta:

  • no se reconocerá la cadena literal debe ser iniciado, lo que podría ser costoso en el largo plazo

  • La cadena literal como removible por los minificadores JS

¿Algún otro punto?

Editar: Por qué traje a colación este tema: He encontrado algo como esto en John Resig's Blog, donde el nuevo estándar ECMA 5 utiliza una cadena literal no asignado para activar el "modo estricto". Ahora me interesaba simplemente evaluar, si podría haber usos o peligros al hacer tal documentación.

+0

y el interés de hacer esto es ...? – mjv

+2

En realidad, YUI Compressor lo reconoce como extraíble y lo elimina. –

+2

@mjv: ... para experimentar y evaluar las características de un idioma. ¿Nunca jugaste Lego (TM)? – Boldewyn

Respuesta

13

Realmente no hay razón para hacer esto en Javascript. En Python, la cadena está disponible como el miembro __doc__ de la función, clase o módulo. Entonces estas docstrings están disponibles para la introspección, etc.

Si crea cadenas como esta en Javascript, no obtiene ningún beneficio sobre el uso de un comentario, además de que tiene algunas desventajas, como que la cadena siempre está presente.

+1

Algunos motores de JavaScript optimizan esto y eliminan la cadena. '(function() {" foobar "}). toString (-1) ===" function() {} "' en Spidermonkey. –

+0

Eso es genial, pero todavía no se gana nada haciendo esto en Javascript. ¿Por qué subvertir el diseño del lenguaje? –

+0

No estoy del todo seguro, si es subversión: http://ejohn.org/blog/ecmascript-5-strict-mode-json-andmore/ – Boldewyn

1

Yo estaba buscando una manera de agregar cadenas multilínea a mi código sin ensuciar con n de \. Parece que este módulo encaja a la perfección: https://github.com/monolithed/doc

Por desgracia, los comentarios no sobrevivirán minimización, pero supongo que se podría escribir una tarea de compilación para convertir cadenas de documentación en formato "\ n".

+0

Eso es muy interesante, pero tenga paciencia conmigo, no veo la relevancia de la pregunta. Bienvenido a StackOverflow, por cierto! – Boldewyn

+1

Es un JS equivalente a una docstring de Python. Entonces agrega su documento como comentario y luego puede acceder a él a través de la propiedad __doc__. Puede ver algunos ejemplos en las pruebas aquí: https://github.com/monolithed/__doc__/blob/master/tests/__doc__.js No estoy del todo claro de lo que está tratando de hacer, pero usted podría usar este enfoque para la documentación. – adampasz

+0

Ah, ya veo: tengo las ventajas de '__doc__' de Python en los comentarios estándar de JS, así que no hay necesidad de experimentos con cadenas ... Buena idea. (Mi intención original con la pregunta era evaluar la posibilidad misma de usar cadenas sin asignarlas, pero estoy de acuerdo, no tiene sentido sin usar el caso.) – Boldewyn

Cuestiones relacionadas