【问题标题】:Good guidelines on naming bool properties关于命名布尔属性的良好指南
【发布时间】:2011-01-14 01:34:36
【问题描述】:

一般来说,如果有一个属性可以获取/设置状态值,我会使用“Is”,例如:

Visibility:
.IsVisible

但是对于获取/设置操作的属性,最好使用什么?喜欢:

Casting shadows:
.CastShadows

我应该使用:

.DoesCastShadows

有更好的选择吗?

【问题讨论】:

    标签: .net properties naming-conventions


    【解决方案1】:

    大部分库都使用.IsShadowCastingEnabled 之类的东西。

    例如,UIElement 定义了IsInputMethodEnabledIsHitTestVisible

    这样做的好处是IsXXX 清楚地表明这是一个布尔属性。

    【讨论】:

    • 嗯,没有意识到这一点。 +1
    • 谢谢,现在我分裂了。那我可能会同意你的回答。顺便说一句,当您谈到图书馆时,您的意思是 BCL 或 WPF 或网络上的任何其他内容?
    • @Joan:存在一些差异 - 部分取决于 API 的年龄。例如,WCF 经常去掉“是”,但仍然使用其余的基本概念......
    【解决方案2】:

    我认为CastsShadows 会起作用。在Cast 之后通知s。它与Is 平行,都以单数动词开头(Does 听起来很俗气)。

    【讨论】:

      【解决方案3】:

      我的偏好是对只读属性使用“Is”;我可能会使用“EnableShadows”之类的东西作为属性。从名称上可能不会立即看出它是属性而不是方法,但是在阅读代码时应该很明显,并且在编写代码时 Intellisense 应该表明它是一个属性。此外,如果尝试使用 EnableShadows 作为一种方法,编译器应该会抱怨。

      【讨论】:

      • 某些属性的行为类似于字段,在写入时会导致事情发生,但通常会读取最后写入的内容。其他反映对象的某些属性,这些属性将由写入属性以外的其他东西控制。你有任何命名约定来区分它们吗?
      • 您的意思是某些东西是动态计算的还是由支持字段返回的还是没有支持字段的属性(由程序员定义)?在那种情况下,不,我仍然不使用不同的名称。我有像 vector3.Length 这样动态计算的属性。
      • 我倾向于将属性分为三组:主要是由于对属性本身的直接操作而发生更改的属性,以及可以通过对属性本身的直接操作而更改但也可能在外部发生更改的属性,以及计算的属性。对于前一种类型,我喜欢读/写属性;对于最后两种类型,只读属性或 getter 方法(取决于检索值所涉及的工作),对于中间一种,setter 方法。通过命名来区分类型会很好,但只有在布尔值的情况下才会想到一种干净的方式(“Is”)
      • @Joan Venge:(见上文,加上...)我不确定究竟是什么标准来定义我认为一个属性是否应该有一个“是”。有些事情“感觉”应该是应该的,有些则不是。一个重要因素可能是财产何时易于改变的性质。如果某个对象的某些布尔属性由于对其他对象或系统中其他事件的操作而易于自发更改,我将更倾向于想要“是”名称(例如,一个“IsReady”属性通信对象,表明它已准备好让程序为其提供数据)。
      猜你喜欢
      • 2016-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-18
      • 1970-01-01
      • 2012-02-23
      • 2013-08-26
      相关资源
      最近更新 更多