2013-04-08 52 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