应该在C#中清空"if"语句导致错误或警告?

Ale*_*nin 4 .net c# c#-3.0 c#-2.0 c#-4.0

让我从现实生活中的例子开始:

客户:Alex,刚刚在第138行的RemovalProcessor中发现了一些奇怪的事情:

if (Session.Handler.ExecutePrefetchTasks()==null); 
  Session.ExecuteDelayedQueries(); 
Run Code Online (Sandbox Code Playgroud)

那个'if'后面的半圆应该在那里吗?

我:哎呀......我会把它发给我们的家伙来检查,但最有可能的是,你是对的.

虽然案件很少见,但我承认几乎所有大项目都有类似的问题.

我知道C#中的分号(和语句块)使用规则不能改变(我个人更喜欢Python风格).但我认为用语句确切地识别这种情况是个好主意if,并将其归类为错误或警告.

很少有Q/AI考虑到:

  • 为什么在这种情况下应该生成警告或错误?

    因为这是开发人员的错误可能是99%的概率.

  • 为什么在这种情况下错误更可取?

    在许多情况下,开发人员会忽略警告.

    我明白这是他们自己的问题,并且有/ warnaserror(威胁警告为错误)切换,但由于这是一个非常高概率的错误,并且,如果它不是错误(真的?;)),它是相当的很容易解决这个问题,可能最好将此案例归类为错误.

    最后,在这种情况下的错误不会"限制"开发人员,因为这样的代码可以(并且可能必须)总是在没有if语句的情况下被重写.

  • 为什么警告在这种情况下更可取?

    这不会破坏兼容性; 我还怀疑一些代码生成器可能会依赖于当前行为生成代码.

所以我很高兴听到你对此的看法.

Tim*_*mwi 12

它已经产生了一个警告:

可能是错误的空话

我同意你的观点,错误本来是可取的(如果你真的想要一个空的语句,总是可以把它写成{ },这更明确) - 但它们不会以这种方式改变C#语言.这将是一个突破性的变化,我怀疑他们(读:Eric Lippert的)理由是"利益不会超过成本".

  • @Alex:这是否表明您的项目有太多警告,所以每个人都忽略它们?也许您应该考虑修复代码,使其不再有警告和/或在您认为代码正常且警告应该被静音的地方使用`#pragma warning disable`.然后你可以再次开始关注警告. (7认同)
  • 你们知道你可以打开"所有警告都是错误",切换,对吧? (4认同)