首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >高效的编程技术

高效的编程技术
EN

Stack Overflow用户
提问于 2012-05-18 02:15:13
回答 4查看 2.2K关注 0票数 0

我正在编写一个方法,我想知道附加的代码是否有效取决于它是如何编写的:

代码语言:javascript
运行
复制
    public boolean isThreeOfKind(PlayingCard[] hand)
    {
//            if(hand[0].getRank() == hand[2].getRank())
//                return true;
//            else if(hand[1].getRank() == hand[3].getRank())
//                return true;
//            else if(hand[2].getRank() == hand[4].getRank())
//                return true;

        return (hand[0].getRank() == hand[2].getRank() || 
                hand[1].getRank() == hand[3].getRank() || 
                hand[2].getRank() == hand[4].getRank());
    }

所以正如你所看到的,我有一个if else if语句被注释掉了,一个return语句基本上做了同样的事情,根据编码标准,哪一个会更有效?

EN

回答 4

Stack Overflow用户

发布于 2012-05-18 02:17:46

效率上没有区别,但风格上有明显的区别,第二个好得多。然而,这个特殊的逻辑实际上只是

代码语言:javascript
运行
复制
for (int i = 0; i < 3; i++) 
  if (hand[i].getRank() == hand[i+2].getRank()) return true;
return false;
票数 9
EN

Stack Overflow用户

发布于 2012-05-18 02:18:59

这种类型的问题在CodeReview上可能更好,因为它更多的是一种观点。但在我看来,阅读非注释部分要容易得多,在它成为一个问题之前(特别是在这样的情况下),性能不应该担心。有关这方面的更多信息,请参阅维基百科上的程序优化文章,特别是When to Optimize部分。

票数 3
EN

Stack Overflow用户

发布于 2012-05-18 02:26:16

正如Jeffery所说,在这种情况下,我会说可读性比效率更有价值(我不会说这是一个普遍规则)。

您可能会对名为Short-Circuit Evaluation的概念感兴趣。注意,在Java中,||是一个短路运算符。因此,如果第一个语句为真,您将获得与if语句相同的效果(不会计算其他两个语句)。

也就是说,我不确定这两段代码是否会编译成相同的函数(它们可能取决于编译器的实现)。如果它们不是向下编译相同的,第二个可能会更快。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10641253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档