Quando creo una libreria, devo assicurarmi che i metodi privati debbano funzionare come previsto quando non vengono chiamati da altri metodi della stessa classe, ma da un'altra libreria tramite la reflection ?
Ad esempio, se un metodo privato private DoSomething(int number)
si aspetta che:
-
number
è un numero intero positivo diverso da zero e: - una variabile privata
string abc
non è nullo e non una stringa vuota,
e completamente, brutto fallisce se queste due condizioni non corrispondono, devo gestire quei guasti anche se so che tutti i metodi nella classe saranno sempre¹ assegnare un valore non vuoto a abc
prima di chiamare DoSomething
e passare un intero positivo diverso da zero a questo metodo?
In altre parole, è il codice che non è protetto da chiamate non sicure tramite la riflessione può essere considerato come un codice di bassa qualità , oppure appartiene al chiamante che usa la riflessione per garantire che la chiamata non rompere qualcosa?
Nota: la mia domanda riguarda solo un set standard di librerie. Questo non copre il codice che deve essere altamente sicuro (cioè quando qualcuno può essere interessato dall'utilizzo del reflection per farlo comportare inaspettatamente o crash).
¹ Perché la classe è correttamente documentata, perché ci sono abbastanza test unitari per essere sicuri che qualsiasi altro sviluppatore non romperà questo metodo, ecc.