2013-04-08 76 views
0

所以我有一個問題。今天,我開始優化我的代碼,並得到了這一點,例如:爪哇.startsWith優化

return !this.message.startsWith("/"); 

好跟隨着我把我的優化建議從here(與規則)

所以應該怎麼寫代碼更優化的版本? 我目前得到了:

return !(this.message.length() > ZERO) && this.message.charAt(ZERO) == Slash; 

我寫得對嗎? 如果我寫錯了,那麼我寫錯了什麼?

感謝, 坦佈雷

+5

你需要優化它嗎?第一個是更可讀... – NilsH 2013-04-08 17:25:59

+9

爲什麼你創建了'0'的命名常量?那看起來很糟糕。 – nothrow 2013-04-08 17:27:50

+5

我懷疑它會更快... – assylias 2013-04-08 17:28:34

回答

5

拋開你引用的規則(我不同意,順便的有效性,因爲我覺得讓代碼的可讀性是一種極爲嚴重的罪比任何微小的性能改進—如果任何—這種轉變可能會提供),所產生的代碼應該是:

return !(this.message.length() > ZERO && this.message.charAt(ZERO) == Slash); 

你只左右的條件,這是不對的第一項括號。稍微更可讀的版本將是:

return this.message.length() <= ZERO || this.message.charAt(ZERO) != Slash; 
+9

優化的一個很好的例子,它不會優化任何東西,並將正確的代碼變成一輛越野車:-) – assylias 2013-04-08 17:30:21

+1

記住早期的​​優化是所有邪惡的根源 – jsedano 2013-04-08 17:32:27

+5

@anakata - 或者,俗話說「我寧願優化一個調試程序,而不是調試一個優化的程序「。 – 2013-04-08 17:33:02