Dopo aver passato molto tempo a scrivere C # e a guardare Java, mi sembra che le annotazioni siano solo un brutto odore di codice che introduce un altro strato concettuale che potrebbe facilmente essere sostituito dalle funzionalità linguistiche esistenti, sia che si tratti di parole chiave (come nel caso della parola chiave override
di C # rispetto all'annotazione @override
di Java) o dell'ereditarietà (perché non solo un'interfaccia ISerializable o una classe base anziché un attributo [Serializable]
?) Tuttavia, questa conclusione potrebbe essere dovuta anche al mio parente inesperienza come programmatore professionista.
La mia domanda è composta:
- Che cosa portano in tavola le annotazioni che non possono essere realizzate in altri modi, senza complicare la grammatica di una lingua?
- Ci sono cose che possono essere implementate senza annotazioni, ma che sarebbe molto più difficile da implementare senza di esse?
- Più in generale, dove (se da qualche parte) si trova la linea di demarcazione tra dati e metadati in un linguaggio di programmazione?
La mia domanda è diversa da Quali sono i problemi con le annotazioni Java adatto a? . Per cominciare, questa domanda non è specifica per Java. Voglio sapere, in generale, se le annotazioni sono indispensabili o semplicemente utili . Sono anche curioso di sapere la distinzione teorica tra dati e metadati e quanto sia davvero utile questa distinzione.