【问题标题】:Boolean naming convention: statement or questionn? [closed]布尔命名约定:陈述还是问题? [关闭]
【发布时间】:2014-10-27 14:52:49
【问题描述】:

(questionn 故意拼错:stackoverflow 不允许标题中出现“question”一词)

考虑一个属性SomethingHasChanged

这可以读作陈述,SomethingHasChanged!,或问题,SomethingHasChanged?

命名布尔值的约定 (C#) 是什么?作为陈述还是作为问题?

背景

我工作的客户的所有代码都是用荷兰语编写的。在荷兰语中,这两种形式在英语中存在细微差别。因此,我们需要在这两种形式之间做出决定。示例:ErIsIetsGewijzigd!IsErIetsGewijzigd?

【问题讨论】:

  • 恕我直言 SomethingHasChanged 应被视为声明。如果我想问问题,我想写:HasSomethingChanged()
  • 这两个名字听起来都很可怕,因为你对我说的原因,不确定你在哪里使用它,但通常你不需要布尔值来表示改变,你使用事件。此外,我倾向于只阅读尽可能接近纯英语的代码,因此它否定了这个问题。所以它变成“如果我的项目发生了变化”
  • Is...Has... 开始总是好的,因为您会立即看到这是一个增加可读性的bool 变量。如果您正在使用智能感知搜索属性,它也很有用。

标签: c# boolean naming-conventions


【解决方案1】:

许多布尔属性以 IsHas 开头,例如:

this.IsRed = this (object) is red
this.HasChildren = this (object) has children

你的名字不太符合这个惯例:

this.SomethingHasChanged = this (object) has something that has changed.

为了符合此约定,我会将您的资源重命名为 IsDirty 或类似名称。

【讨论】:

    【解决方案2】:

    布尔变量或属性是表达式的结果,因此,它不是问题,而是语句。

    如果你问的是一个需要操作来回答的问题,那么它应该是一个方法并且可以这样命名。

    【讨论】:

      【解决方案3】:

      这取决于您是想传达您的读取状态还是根据请求确定它。属性bool HasChanged {get; set; } 可以调用两次,它应该产生相同的存储值。但是bool HasChanged() 的方法会根据需要为您进行通信。

      最后,由于我也是荷兰人,ErIsIetsGewijzigd 听起来像一个命令,因此当我阅读它时,它应该设置属性,即ErIsIetsGewijzigd(true);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-31
        • 2018-08-31
        • 1970-01-01
        • 2011-06-24
        相关资源
        最近更新 更多