L'uso delle annotazioni è dannoso per la qualità del codice e la manutenzione del codice a lungo termine?

7

Con il motore di elaborazione delle annotazioni Doctrine per PHP e gli Annotatons utilizzati per Doctrine Entities e per Zend Form, e possibilmente altre cose, e anche in altre lingue, sembra che Annotations sia qui per rimanere.

Esempi di annotazioni per il modulo 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 classe

AnnotationBuilder con l'aiuto del motore di elaborazione continuerà a costruire per me un modulo Zend, secondo le specifiche. Modi alternativi per farlo sono disponibili tramite classi e metodi Zend \ Form.

Preoccupazioni

Ho notato che le annotazioni sono fondamentalmente commenti e non sono soggette a verifica da parte dell'interprete o di un compilatore, e questo è parte della mia preoccupazione. Se alcune sintassi cambiano, non vi è alcun messaggio di errore e non è immediatamente rilevabile nulla che debba essere corretto.

Si potrebbe pensare che l'errata digitazione di una proprietà possa generare un errore da qualche parte, ma no - tentando di modificare alcune delle direttive di annotazione, non viene emesso un avviso, ma si presume che i valori predefiniti siano assunti. Come tale, digitando un'annotazione non si ottiene il feedback su alcuna sintassi degli errori semantici.

Domanda

Quando sono disponibili altri modi (classi, metodi, api, matrici), che possono essere controllati staticamente e dinamicamente, è dannoso per la qualità del codice e la manutenzione utilizzare le annotazioni?

    
posta Dennis 15.02.2017 - 19:29
fonte

2 risposte

3

, incorporando le funzionalità in una lingua separata nei commenti, che non verifica la sintassi e che non funziona in modo silenzioso sugli errori, non è ottimale e presenta un problema di manutenzione. Penso che tu risponda a questa domanda tu stesso con le preoccupazioni che sollevi.

E , eviterei assolutamente di farlo e userei qualcos'altro se è disponibile.

    
risposta data 10.04.2017 - 17:36
fonte
2

Sono andato avanti e ho utilizzato ampiamente Annotations ora, lo trovo piuttosto interessante.

La cosa buona è che è abbastanza intercambiabile con altri metodi dovrei iniziare a odiarlo totalmente, anche se la conversione di Annotazioni in un altro metodo richiederà un po 'di lavoro. Ma come è ora, ripulisce il codice avendo meno classi e si sente "fuori strada", e funziona bene anche con il controllo programmatico dei moduli

Ho anche scoperto che c'è una notifica di errore alcuni se si danneggiano male. Ad esempio, Annotations usa un tokenizer, che ti dice cosa si aspetta e dove fallisce. Se la sintassi è corretta ma i parametri sono sbagliati, fallisce ancora in modo silenzioso, e devi fare qualche ricerca sul perché non funziona. Tuttavia non è sempre correlato alle annotazioni. Ad esempio, se aggiungi un attributo HTML a un tag tramite Zend\Form\Element , quell'attributo deve avere un certo nome come definito in Zend Code, cioè "class" o "id", ma non "randomClassName" (che silenziosamente non viene aggiunto)

    
risposta data 10.04.2017 - 21:43
fonte