Questo è un evento comune nella programmazione ed è indipendente dal linguaggio, hai una funzione che deve fare qualcosa ma solo in alcuni casi. Forse è un interruttore di funzionalità, forse è una funzione che ha bisogno di alcuni dati per essere passati ad essa.
Ti restano due scelte:
Verifica lo stato all'interno della funzione o controlli lo stato prima di chiamare la funzione?
Ecco un esempio in JavaScript per illustrare cosa intendo:
// method 1 if statement inside function
var getReviews = function() {
if (enabled !== true) { return []; }
return doWork();
}
var reviews = getReviews();
// method2 if statement outside function
var getReviews = function() {
return doWork();
}
var reviews = enabled === true ? getReviews() : [];
Pro di controllo all'interno:
- Facile da chiamare, il chiamante della funzione non deve essere a conoscenza di determinati stati obbligatori, possono semplicemente chiamare e recuperare i dati vuoti.
Pro del controllo esterno:
- Se una funzione viene chiamata quando lo stato non è corretto, può generare un'eccezione che avvisa gli sviluppatori in uno stato potenzialmente negativo, questo non è possibile se si esce silenziosamente come facciamo con il check-in.
- La funzione stessa è idempotente perché si basa sullo stato al di fuori di se stessa. Questo generalmente aiuta con la manutenibilità delle funzioni.