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

样式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的大多数人的看法。这就是史蒂夫·麦康奈尔(Steve Mcconnell)在“代码完成”中赞成的意思-说出您的意思,即,如果您对条件为真更感兴趣,而错误状态则更罕见或不受欢迎,然后说明首选版本。

在实践中,尽管我经常发现自己使用样式2,因为我喜欢先清除所有可能的错误/无效状态。摆脱了所有我不感兴趣的可能性之后,我可以将最核心的代码写到例程的末尾,而不必不断地怀疑是否需要防范某种情况或其他情况。基本上,态度是,摆脱糠cha,然后和平地进行实际工作。

10-02 04:25