【发布时间】:2010-08-23 04:34:47
【问题描述】:
让我从一个现实生活中的例子开始:
客户: Alex,刚刚注意到第 138 行的 RemovalProcessor 中有一些奇怪的东西:
if (Session.Handler.ExecutePrefetchTasks()==null); Session.ExecuteDelayedQueries();'if' 后面的分列应该在那里吗?
我: 哎呀...我会把这个发给我们的人检查,但很可能,你是对的。
虽然这种情况很少见,但我承认几乎所有大项目都有类似的问题。
我了解 C# 中的分号(和语句块)使用规则无法更改(我个人更喜欢 Python 风格)。但我认为用if 语句识别正是这种情况 是个好主意,并将其归类为错误或警告。
我想到的几个问答:
-
为什么在这种情况下会产生警告或错误?
因为这可能是 99% 的概率是开发人员的错误。
-
为什么在这种情况下错误更可取?
在许多情况下,开发人员会忽略警告。
我明白这是他们自己的问题,还有 /warnaserror (威胁警告为错误)切换,但因为这是一个错误 很有可能,而且,如果它不是错误(真的吗?;)), 解决这个问题很容易,可能最好对这种情况进行分类 作为一个错误。
最后,这种情况下的错误不会“限制”开发人员, 因为这样的代码可以(并且可能,必须)总是被重写 没有
if声明。 -
为什么在这种情况下最好使用警告?
这不会破坏兼容性;我也怀疑一些代码生成器 可能会根据当前行为生成代码。
所以我很高兴听到您对此的意见。
【问题讨论】:
-
Resharper 会给你一个警告 :-)
标签: c# .net c#-3.0 c#-4.0 c#-2.0