Ho scritto C# e il mantra che arriva dall'alto sembra "non usare mai la riflessione nel codice di produzione". L'ho usato per il codice di test, ma mai nulla che funzioni in natura. Tutti gli argomenti sembrano ragionevoli, e c'è sempre un modo per farlo aggiungendo un altro strato di astrazione o modello di progettazione o qualsiasi altra cosa.Non utilizzare mai la riflessione nel codice di produzione! Che mi dici di Python?
Ora sto iniziando a scrivere un codice Python serio, mi chiedo se valga lo stesso principio. Sembra che Python sia progettato pensando alla riflessione. Moduli e classi memorizzano membri in un dizionario facilmente accessibile. Le classi Meta dei modelli di Django, ad esempio, prendono le stringhe come membri di riferimento.
Potrei scrivere C#/Java in Python ma davvero non voglio. Credo ancora fermamente in "nessuna riflessione" per le suddette lingue. Il modo Python è fondamentalmente diverso?
Questo è divertente, perché Reflection è così pesantemente utilizzato in entrambe le librerie .NET e di terze parti, che "non usando la riflessione" significherebbe "non usare .NET stesso". – Euphoric
Sì, .NET usa la riflessione per fare ogni genere di cose. Ma un altro dei principi era "affidarsi a .NET e ad altre biblioteche per fare ciò che promettono". Che va bene se ci si attiene a librerie ben testate. Dovremmo preoccuparci principalmente dei bug nel nostro codice. – Joe
Penso che si possa dire di qualsiasi tecnologia, non solo di Reflection. Finché sai cosa stai facendo e conosci i suoi alti e bassi, non trovo un motivo per non usarlo. – Euphoric