¿La práctica de usar anotaciones es perjudicial para la calidad del código y el mantenimiento del código a largo plazo?

7

Con el motor de procesamiento de anotaciones de Doctrine para PHP y Annotatons que se usan para las Entidades de Doctrine y para Zend Form, y posiblemente otras cosas, y también para el uso en otros idiomas, parece que Annotations está aquí para quedarse.

Anotaciones de ejemplo para el formulario Zend:

/**
 * @Annotation\Filter({"name":"StringTrim"})
 * @Annotation\Validator({"name":"StringLength", "options":{"min":1, "max":24}})
 * @Annotation\Validator({"name":"Regex","options":{"pattern":"/^[a-zA-Z][a-zA-Z0-9_-]{0,24}$/"}})
 * @Annotation\Attributes({"type":"text"})
 * @Annotation\Options({"label":"Username:"})
 * @Annotation\ErrorMessage("Invalid Username")
 */
public $username;

La clase AnnotationBuilder con la ayuda del motor de procesamiento pasará a construir un formulario Zend para mí, de acuerdo con las especificaciones. Hay formas alternativas de hacerlo disponibles a través de las clases y métodos de Zend \ Form.

Preocupaciones

Observo que las anotaciones son básicamente comentarios y no están sujetos a verificación por parte del intérprete o compilador, y eso es parte de mi preocupación. Si se modifica la sintaxis, no hay ningún mensaje de error y no se puede detectar nada que deba solucionarse.

Podría pensar que escribir mal una propiedad provocará un error en alguna parte, pero no; al intentar modificar algunas de las directivas de anotación, no se emite una advertencia, pero se asumen los valores predeterminados. Como tal, al escribir una anotación no se obtiene información sobre ninguna sintaxis de los errores semánticos.

Pregunta

Cuando hay otras formas disponibles (clases, métodos, api, arrays), que podrían verificarse de forma estática y dinámica, ¿es perjudicial para la calidad del código y el mantenimiento el uso de Anotaciones?

    
pregunta Dennis 15.02.2017 - 19:29

2 respuestas

3

Sí , incrustar la funcionalidad en un idioma diferente en los comentarios, que no verifica la sintaxis y que falla silenciosamente en los errores, es menos que óptimo y un dolor de cabeza de mantenimiento. Creo que usted mismo responde a esta pregunta con las inquietudes que plantea.

Y sí , absolutamente evitaría esto y usaría algo más si está disponible.

    
respondido por el user82096 10.04.2017 - 17:36
2

Seguí adelante y he usado Anotaciones ampliamente ahora, y me parece muy bien.

Lo bueno es que es bastante intercambiable con otros métodos en caso de que empiece a odiarlo totalmente, aunque la conversión de Anotaciones a otro método llevará algo de trabajo. Pero tal como está ahora, limpia el código al tener menos clases y se siente "fuera del camino", y también funciona bien con el control de forma programático

También encontré que hay alguna notificación de error si te equivocas. Por ejemplo, las anotaciones usan un tokenizador, que le dice qué espera y dónde falla. Si la sintaxis es correcta pero los parámetros son incorrectos, todavía falla silenciosamente, y tienes que investigar un poco por qué no funciona. Sin embargo, no siempre está relacionado con las anotaciones. Por ejemplo, si agrega un atributo HTML a una etiqueta a través de Zend\Form\Element , ese atributo debe tener un nombre determinado como se define en el Código Zend, es decir, "clase" o "id", pero no "randomClassName" (que silenciosamente no obtener añadido)

    
respondido por el Dennis 10.04.2017 - 21:43

Lea otras preguntas en las etiquetas