【问题标题】:style opinion re. empty If block风格意见重新。空 If 块
【发布时间】:2010-10-05 16:04:31
【问题描述】:

我正在努力遏制自称“高级程序员”的一些坏习惯。他坚持写这样的 If 块:

if (expression) {}
else {
    statements
}

或者就像他通常用经典的 ASP VBScript 编写的那样:

If expression Then
Else
    statements
End If

表达式可以很容易被否定:

if (x == 0) {}
else {
    statements
}

除了清晰的编码风格,我还能提供哪些其他理由来证明我认为以下是首选?

if (x != 0) {
    statements
}

甚至更一般的情况(同样在 VBScript 中):

If Not expression Then
    statements
End If

【问题讨论】:

    标签: coding-style


    【解决方案1】:

    我认为支持您的观点(我同意 BTW)的原因是:

    1. 更容易阅读(这意味着更容易理解)
    2. 更易于维护(因为第 1 点)
    3. 与大多数主要编程语言中“既定”的编码风格一致

    我从来没有遇到过你的同事坚持使用的编码风格/形式。

    【讨论】:

      【解决方案2】:

      两种方法我都试过了。 McConnell 在 Code Complete 中说应该始终同时包含 thenelse 以证明已经考虑了这两种情况,即使操作什么都不是 (NOP)。看起来你的朋友正在这样做。

      我发现这种做法不会在该字段中添加任何值,因为单元测试会处理此问题,否则它是不必要的。当然是 YMMV。

      如果您真的想烧掉他的培根​​,请计算他花费多少时间编写空语句,乘以 1.5(用于测试),然后将该数字乘以他的每小时费率。给他寄一张账单。


      顺便说一句,我会将大括号移到else 行:

      if (expression) {
      } else {
          statements
      }
      

      原因是很容易(或容易不小心)在块外添加一些语句。

      出于这个原因,我讨厌单行(裸)语句,格式为

      if (expression)
        statement
      

      因为它可以很快变得丑陋(和错误)

      if (expression)
        statement1
        statement2
      

      statement2 将始终运行,即使它看起来应该受制于expression。养成总是使用方括号的习惯会扼杀这个绊脚石。

      【讨论】:

        猜你喜欢
        • 2016-03-21
        • 1970-01-01
        • 1970-01-01
        • 2012-11-23
        • 1970-01-01
        • 2013-07-14
        • 2010-09-12
        • 1970-01-01
        • 2020-07-03
        相关资源
        最近更新 更多