QNA > P > Perché Scrivere Troppe Dichiarazioni Condizionali È Considerato Una Cattiva Pratica Di Programmazione?

Perché scrivere troppe dichiarazioni condizionali è considerato una cattiva pratica di programmazione?

Se è l'opzione più efficiente, allora non è una cattiva pratica. Fare qualcosa che ha una soluzione più semplice ed elegante facilmente disponibile, però, è una cattiva pratica.

In questo caso, uno switch gigante può spesso essere sostituito da un'interfaccia o permettendo ad una classe di avere la propria responsabilità, ecc.

Per esempio, se avete qualcosa come questo:

main-qimg-3eb08fa3b7a2e9caa2cfb2ccff1e76e2

Questo funzionerà. Il codice sarà più o meno robusto finché i valori vengono solo aggiunti e non modificati, e in realtà è anche abbastanza efficiente dato che i confronti tra bit richiedono virtualmente zero tempo. Ma questo andrà fuori controllo, difficile da navigare, e devi già definire queste classi di auto comunque.

Invece, iniziamo con qualcosa come questo:

main-qimg-338a1579e830ee9fe9027cf4f8fd19b8

Ancora una volta, probabilmente avevamo questo in ogni caso, solo senza il metodo numberOfCylinders, e così ora il nostro primo metodo sembra questo:

main-qimg-4c959dc0d3d1f01fcee0a7f33dede731

Ora immaginate per un momento che siamo un negozio nazionale di ricambi auto, e abbiamo letteralmente migliaia di auto di varie marche, modelli, finiture, ecc. Quell'if/else diventerebbe un enorme mostro, impossibile da leggere, estremamente difficile da aggiungere o rimuovere in modo sicuro, ecc.

Così di nuovo, non è sempre una cattiva pratica, e a volte avremo bisogno di un grande interruttore o qualcosa del genere, ma di solito c'è un modo più semplice nascosto lì dentro.

EDIT: Ci sono molti commenti sull'avere un numero estremamente grande di combinazioni di auto (potenzialmente milioni attraverso la storia) e classi che implementano Car fallendo qui. Naturalmente ad un certo punto, le classi non funzioneranno, e dovrai memorizzare file piatti in un database e usare un accessor.

La mia risposta era intesa a mostrare la trappola dell'uso di dichiarazioni condizionali molto lunghe, non come un effettivo tentativo di costruire un'architettura di un negozio di ricambi auto. Se lavorate in un grande rivenditore di auto, per favore non prendete la mia semplice risposta come base della vostra architettura software :)

Di Bullard Abston

Quali sono i tuoi talenti inutili? :: Che ne sai tu del roling in profondità?
Link utili