Verifica dello stato valido all'interno della funzione o all'esterno [chiuso]

2

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.
posta Nucleon 23.03.2015 - 20:29
fonte

1 risposta

2

Questa domanda deriva principalmente dalla preoccupazione per la manutenzione, quindi supporrò che tu abbia molte di queste funzioni dipendenti dallo stato.

Suggerirei di includere uno strato tra il client e la funzione che sta chiamando, che dipende dallo stato. Quindi lascia che questo layer gestisca la gestione dello stato. Questo farà due cose per te:

1) Scarica la logica dal tuo client e dalla tua funzione.

2) Centralizza tutta la gestione dello stato in un unico posto invece di averlo ovunque fuori dalle funzioni o all'interno di ogni singola funzione.

Se stai controllando gli stati all'interno delle tue funzioni, stai aggiungendo maggiori responsabilità a ciò che stanno già facendo e quindi violando il principio di responsabilità singola .

Inoltre, stai disperdendo la tua logica di stato dappertutto (sia che tu controlli dentro o fuori) invece di averla in un posto centralizzato - Come hai detto tu stesso, questo è un incubo di manutenzione quando le tue funzioni cominciano a sommarsi e tu decidi di cambiare.

    
risposta data 23.03.2015 - 22:07
fonte

Leggi altre domande sui tag