当前位置:  开发笔记 > 编程语言 > 正文

如果(条件)继续; 或者if(!condition){...}?(风格偏好)

如何解决《如果(条件)继续;或者if(!condition){}?(风格偏好)》经验,为你挑选了4个好方法。

我知道这是一个风格问题,因此是主观标签.我有一小段代码,有两个嵌套条件.我可以用两种方式对它进行编码,我希望看到更有经验的开发人员认为它应该是什么样子.

风格1:

while (!String.IsNullOrEmpty(msg = reader.readMsg()))
{
    RaiseMessageReceived();
    if (parseMsg)
    {
        ParsedMsg parsedMsg = parser.parseMsg(msg);
        RaiseMessageParsed();
        if (processMsg)
        {
            process(parsedMsg);
            RaiseMessageProcessed();
        }
    }
}

风格2:

while (!String.IsNullOrEmpty(msg = reader.readMsg()))
{
    RaiseMessageReceived();
    if (!parseMsg) continue;

    ParsedMsg parsedMsg = parser.parseMsg(msg);
    RaiseMessageParsed();
    if (!processMsg) continue;

    process(parsedMsg);
    RaiseMessageProcessed();
}

(附带问题:如何在源代码示例中放置空行?)



1> Oddthinking..:

我更喜欢Style 1 - 带有缩进.



2> Oddthinking..:

我更喜欢Style 2 - 使用continue语句.



3> Marek Jedliń..:

原则上我同意喜欢风格1的大多数人.这就是Steve Mcconnell在"代码完成"中所赞同的 - 说出你的意思,即你是否对条件是真的更感兴趣,而虚假状态是罕见的或不是首选的,然后说明首选版本.

在实践中虽然我经常发现自己使用样式2,因为我喜欢首先清除所有可能的错误/无效状态.在我摆脱了我不感兴趣的所有可能性之后,我可以将心脏代码编写到例程的末尾,而不必经常想知道我是否需要防范某些条件或其他条件.基本上,态度是,摆脱糠,,然后在和平中做真正的工作.



4> Amy B..:

这两个都是假的.不要将赋值放在条件表达式中.

(!String.IsNullOrEmpty(msg = reader.readMsg()))

你只是这样做是因为读者的行为不稳定 - 为什么读者会给你一条非信息表明读完了?这是一个有更好设计的读者的替代方案:

while (reader.HasMessage())
{
  string msg = reader.GetMessage();
  HandleMessage(msg);
}

推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有