mi piacciono i commenti sul ottimizzando le cose in questo modo, per aggiungere un po 'di più ad esso ...
L'unica volta che mi viene in mente che ha senso per ottimizzare il vostro istruzioni if è quando si hanno i risultati di DUE o più metodi piuttosto lunga corsa che devono essere combinati per determinare a fare qualcosa di diverso. Si desidera eseguire la seconda operazione solo se la prima operazione ha prodotto risultati che supererebbero la condizione. Mettere quello che è più probabile che restituisca falso prima sarà generalmente una scelta più intelligente. Questo perché se è falso, il secondo non verrà valutato affatto. Ancora una volta, vale la pena preoccuparsi solo se le operazioni sono significative e si può prevedere quale è più probabile che passi o fallisca. Inverti questo per OR ... se è vero, valuterà solo il primo e così ottimizzerà in questo modo. cioè
if (ThisOneUsuallyPasses() && ThisOneUsuallyFails())
non è così buono come
if (ThisOneUsuallyFails() && ThisOneUsuallyPasses())
perché è solo sul caso strano che il primo funziona in realtà che si deve guardare al secondo. Ci sono altri sapori di questo che puoi derivare, ma penso che dovresti ottenere il punto.
Meglio preoccuparsi di come si usano stringhe, raccolte, indicizzare il database e allocare oggetti piuttosto che passare molto tempo a preoccuparsi della condizione singola se le affermazioni se ci si preoccupa di perf.
In generale, ciò che il codice in basso si dà farà è dare l'opportunità di evitare un enorme blocco di codice all'interno di un'istruzione if che può portare a errori di battitura guidato stupide. Il pensiero della vecchia scuola era che dovresti avere un solo punto di ritorno da un metodo per evitare una diversa generazione di errori del codificatore. Il modo di pensare attuale (almeno da parte di alcuni fornitori di strumenti come il resharper di jetbrains, ecc.) Sembra essere quello che meglio racchiude la minor quantità di codice all'interno delle dichiarazioni condizionali. Qualunque cosa in più sarebbe soggettiva, quindi lascerò perdere. lettura
fonte
2009-12-11 23:05:56
Sei stato ingannato se ritieni che questa raccomandazione abbia a che fare con il miglioramento delle prestazioni. In realtà è una clausola di salvaguardia che aiuta a ridurre il numero di percorsi di codice nel metodo. Ciò a sua volta riduce la complessità e semplifica i test e la manutenzione. – Ash
Possibile duplicato: http: // stackoverflow.it/questions/268132/ – CMS