Esistono diversi modi per esaminare questa domanda.
Come vengono usati i condizionali
Questa è probabilmente più la domanda che hai posto. E la risposta è, dipende da una serie di fattori. Per le persone che usano pesantemente SQL, alla fine le query spesso sono costruite in un modo (ad esempio usando le clausole WHERE o HAVING) che il codice non ha bisogno di condizioni if
. Tuttavia, quelle condizioni sono appena state trasferite altrove e sembrano diverse. Pertanto, diventa un confronto tra organse e mele.
Alcuni sviluppatori tendono a scrivere più codice condizionale mentre altri possono usare espressioni dichiarative (come LINQ in C #), in cui Select
, ad esempio, incorpora già condizionali.
E infine, a volte è solo uno stile personale. Per chiarezza del codice, preferisco non scrivere condizionali nidificati, e quindi finire per distribuirli altrove. In molti casi, riduco i condizionali utilizzando modelli, come Adapter o DataMapper che spinge il condizionale in un punto e il resto della logica scorre a seconda di quale classe è stata istanziata.
Codice complessità
Esistono alcune metriche, come la complessità ciclomatica (nota anche come complessità condizionale) che tenterà di valutare se il il codice è troppo complesso per essere mantenibile (e quindi considerato negativo). Per i motivi che ho menzionato nella sezione precedente, e spendendo una buona parte della mia carriera nella disciplina di test sul codice degli altri, posso dirti che è difficile generalizzare anche questo, e quindi le opinioni variano su questi parametri, anche all'interno la comunità di test.
Comunque, puoi leggere di più su questi e alcuni strumenti, come Visual Studio, daranno complessità ciclomatica e, a volte, puoi provare a migliorarlo e vedere se è utile con l'organizzazione del codice. A volte, tale "prototipazione" aiuta.
Principio delle condizioni
In linea di principio, le condizioni di if/else
(e tutte le sue sorelle) stanno davvero prendendo una o più decisioni. Tale decisione potrebbe essere dovuta al fatto che il programma deve effettivamente prendere una decisione a nome dell'utente (come decidere se includere una transazione per un bilancio, ecc.) O una decisione per la logica interna del programma (ad esempio in base alla risoluzione dello schermo, decidere se il flusso è multi-colonna o singola colonna).
Quindi, in generale, un bel po 'di codice può sembrare condizionale, e nessuno può dire se c'è qualcosa di sbagliato in questo (o meno).
Conclusione
Secondo me, l'organizzazione del codice è un'arte e una scienza. Ho imparato l'arte solo codificando per vivere per una parte importante della mia carriera, e la parte scientifica apprendendo attraverso libri, recensioni di codici, ecc. Non credo che nessuno possa realizzarsi senza l'altro. La soluzione migliore, se sei preoccupato per il tuo codice, è convincere qualcuno a fare una peer review della tua architettura, design, modello di dati e codice. Un estraneo, in particolare qualcuno che non ha lavorato con te, a volte può anche portare una prospettiva che non puoi facilmente ripagare. Ma puoi restituire il favore a loro (oa qualcun altro).