normalmente, tutti gli sviluppatori sane stanno cercando di avvalersi di dati di tutti i metodi pubblici (casting a tipi appropriati, la validazione, sanificazione ecc)Protezione ingresso di metodi privati / protetti?
La mia domanda è: siete nel codice conferma dei parametri anche passato a metodi protetti/privati ? A mio parere non è necessario, se si securize correttamente i parametri di metodi pubblici e restituire valori dall'esterno (altre classi, DB, di input dell'utente, ecc ...).
Ma io sono costantemente di fronte a framework e app (ovvero prestashop per nominarne uno) dove la convalida viene spesso ripetuta nella chiamata al metodo, nel corpo del metodo e ancora una volta per proteggere il valore restituito - che, penso, sta creando overhead e performace è anche un segno di cattivo design.
Non si verificherà un elevato sovraccarico delle prestazioni dalla convalida a meno che non si stiano utilizzando espressioni regolari (che non si dovrebbero essere). – Andy
Ho visto convalide piuttosto negative, ad es. in prestashop menzionato hanno metodo isTableOrIdentifier nel loro ORM, che usa regexp per verificare la validità del nome di tabella/colonna e viene chiamato letteralmente dozzine di volte all'interno di un oggetto (e immagina ora di importare centinaia o migliaia di oggetti) –
Se stai facendo un appropriato livello di test unitario, quindi saltare qualche convalida di alcuni membri privati andrebbe bene. C'è sempre un rischio, ma se il tuo; o un recensore; l'ispezione del codice mostra che i presupposti a valle saranno sempre corretti in base a ciò che stanno facendo i membri pubblici chiamanti, quindi andrà bene. – JoeGeeky