Il formattatore dovrebbe fare la convalida?

0

Dire che ho un campo SSN in un modulo. Voglio che SSN sia in formato xxx-xx-xxx .

Potrei avere solo un formattatore SSN che verifica se l'input è composto da tutte le cifre e aggiunge trattini quando necessario.

Un'altra opzione è avere sia formatter e validatore SSN. Il formattatore SSN non controlla il tipo o l'intervallo, quindi accetta asdfghjkl e i formati in asd-fg-hjkl . Poi entra in gioco il validatore di espressioni regolari, che mi dice che l'input non ha pattern matcha \d{3}-\d{2}-\d{3} .

Ho trovato alcune librerie di formattazione con funzioni di convalida incorporate, ad es. formatter.js e FieldKit .

Se il formattatore esegue sia la formattazione che la convalida, è una singola responsabilità?

    
posta Gqqnbig 15.10.2015 - 00:29
fonte

1 risposta

2

Il principio di responsabilità unica si applica alle classi di oggetti.

Robert Martin definisce una "responsabilità" come "una ragione per cui la classe deve cambiare", il che significa fondamentalmente che una classe può fare più di una cosa, purché siano correlate. Ad esempio, una classe di accesso ai dati potrebbe avere metodi di creazione, lettura, aggiornamento e cancellazione, ma ciò non significa che abbia quattro responsabilità, una sola: quella dell'accesso ai dati.

Ergo, è del tutto ragionevole che la formattazione e la convalida siano in una classe, poiché entrambe le attività riguardano la responsabilità della gestione dell'input dell'interfaccia utente.

SRP va di pari passo con il principio Open / Closed, che stabilisce che una classe deve essere "aperta per estensione, ma chiusa per modifica". Le classi che aderiscono all'SRP sono più facili da estendere, perché non hai a che fare con più responsabilità ma solo una singola.

Ulteriori letture
Principio di responsabilità singola
Open/Closed Principle

    
risposta data 15.10.2015 - 19:46
fonte

Leggi altre domande sui tag