首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何通过编译器优化使代码更具可读性?

如何通过编译器优化使代码更具可读性?
EN

Stack Overflow用户
提问于 2012-03-22 16:23:55
回答 4查看 249关注 0票数 1

阅读代码比更新代码更频繁。当编译器可以优化最佳执行时,编写更多可读的代码比编写功能强大的代码更好。

例如,请参阅下面的代码--这段代码可以通过合并嵌套的if语句来压缩,但是编译器会不会在我们保持代码的可读性的同时优化这段代码以获得最佳的执行呢?

代码语言:javascript
运行
复制
// yeild sunRays when sky is blue.
// yeild sunRays when sky is not blue and sun is not present.
if (yieldWhenSkyIsBlue)
{
    // if sky is blue and sun is present -> yeild sunRaysObjB.
    if (sunObjA != null)
    {
        yield return sunRaysObjB;
    }
    else
    { 
       // do not yield ; 
    }    
}
else
{
    // if sky is not blue and sun is not present -> yeild sunRaysObjB.
    if (sunObjA == null)
    {
        yield return sunRaysObjB;
    }
}

与此不同的是:

代码语言:javascript
运行
复制
// yeild sunRays when (sky is blue) or (sun is not present and sky is blue).
// (this interpretation is a bit misleading as compared to first one?)
if(( sunObjA == null && yieldWhenSkyIsBlue ==false) || (yieldWhenSkyIsBlue && sunObjA != null) )
{
    yield return sunRaysObjB;
}

阅读第一个版本更好地描述了将来增强\更新的用例?第二个版本的代码比较短,但是读取它并不会使用例变得非常明显,或者说它是吗?除了简洁的代码之外,第二种情况还有其他优点吗?

更新#1:是的,在这两种情况下,它都返回ObjB,但基于条件,它可能根本不会产生结果。因此,战略决定何时屈服,何时不屈服。(可读性是imp的另一个原因)

更新#2:更新到站点一个更好的例子。从stripplingWarrior复制语法

更新#3:更新为“当太阳出来,天空是蓝色的时候,你期望会发生什么”。

EN

Stack Overflow用户

回答已采纳

发布于 2012-03-22 19:00:30

除非您是为了好玩或专门的用例,否则我认为人类可读性是更重要的好代码质量。编译器将将您的大部分表达代码折叠成更高效的形式,您可能永远不会注意到它错过了什么。

考虑到这一点,即使习语代码不那么简洁,也更容易阅读。一种语言的有经验的读者将比不熟悉的代码更快地识别出一种常见的模式,即可以说是“更人性化”,但打破了熟悉的模式。循环/递增结构是代码的一个很好的例子,应该是不足为奇的。所以,我的方法是:要有表现力,但不要太聪明。

票数 1
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9826440

复制
相关文章

相似问题

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