我知道这是风格问题,因此是主观标签。我有一小段代码,带有两个嵌套条件。我可以用两种方式对它进行编码,并且我想看看更有经验的开发人员认为它应该是什么样子。
样式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,然后和平地进行实际工作。