命名布尔属性的FDG是什么?

9

如何命名布尔属性,在 Framework Design Guideline 中有规定吗?如果没有,您有什么建议?

假设我有一个 User 类,我需要一个属性来指定用户是否启用。以下是我能想到的选项:

  • Enable
  • Enabled
  • IsEnabled
  • Disable
  • Disabled
  • IsDisabled

此外,如果业务逻辑要求用户默认情况下必须禁用并明确启用,那么考虑到 System.Boolean 的默认值为 false,我应该使用“enable”变体吗?

2个回答

9
《框架设计准则》(Brad Abrahms 和 Krzysztof Cwalina)建议使用 EnabledIsEnabled(第 3.6.2 节)。他们建议使用肯定的短语(例如,CanSeek 而不是 CantSeek),并使用最可读的版本(例如,Created 比 IsCreated 更可读)。
在您的情况下,我个人会使用 Enabled,默认值为 falseUser.Enabled 读起来清晰明了,其含义也很明确。

有趣的是,微软的一些代码并没有遵循这个指南,例如 System.Web.Mvc.MvcHandler 有一个静态属性 DisableMvcResponseHeader。为什么他们选择使用 Disable?因为它默认情况下是启用的,并且 bool 默认为 false,因此默认情况下它是未禁用的吗? - Max Toro

2

我建议避免使用“disabled”的变量,因为“disabled = false”这样的双重否定比“enabled = true”难以理解。

对于属性,我更喜欢使用形容词形式而不是动词“enable”,这将是更好的方法名称。

这将缩小范围到“enabled”或“isEnabled”,这可能是个人风格和约定的问题。后者强调它是一个布尔值;前者更简洁。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接