Qual è il posto migliore per convalidare i parametri di input della funzione: nel chiamante o nella funzione stessa?
Poiché vorrei migliorare il mio stile di codifica, provo a trovare le migliori pratiche o alcune regole per questo problema. Quando e cosa è meglio.
Nei miei progetti precedenti, eravamo soliti controllare e trattare tutti i parametri di input all'interno della funzione (ad esempio se non è null). Ora, ho letto qui in alcune risposte e anche nel libro del programmatore pragmatico, che la convalida del parametro di input è responsabilità del chiamante.
Quindi significa che dovrei convalidare i parametri di input prima di chiamare la funzione. Ovunque viene chiamata la funzione. E ciò solleva una domanda: non crea una duplicazione della condizione di controllo ovunque venga chiamata la funzione?
Non sono interessato solo a condizioni nulle, ma alla convalida di eventuali variabili di input (valore negativo da sqrt
funzionare, divisione per zero, combinazione errata di stato e codice postale o qualsiasi altra cosa)
Ci sono alcune regole su come decidere dove controllare la condizione di input?
Sto pensando ad alcuni argomenti:
- quando il trattamento della variabile non valida può variare, è bene convalidarlo nel lato chiamante (ad es.
sqrt()
funzione - in alcuni casi potrei voler lavorare con un numero complesso, quindi tratto la condizione nel chiamante) - quando la condizione di controllo è la stessa in tutti i chiamanti, è meglio controllarlo all'interno della funzione, per evitare duplicazioni
- la convalida del parametro di input nel chiamante ha luogo solo una prima di chiamare molte funzioni con questo parametro. Pertanto, la convalida di un parametro in ciascuna funzione non è efficace
- la soluzione giusta dipende dal caso particolare
Spero che questa domanda non sia duplicata da nessun'altra, ho cercato questo problema e ho trovato domande simili ma non menzionano esattamente questo caso.