IsEnabled还是已启用?

时间:2010-09-01 14:07:17

标签: wpf silverlight naming-conventions

在整个Silverlight和WPF中,布尔值的属性以 Is almost all)作为前缀,例如:

  

的IsEnabled
  IsTabStop
  IsHitTestVisible

在所有其他Microsoft框架(winforms,BCL,ASP.NET)中,未使用。是什么促使他们的团队摆脱原来的命名惯例 - 这是一个必须坚持的演变或命名命名?

3 个答案:

答案 0 :(得分:14)

就个人而言,我总是尝试在布尔值前加上一些更多含义的东西(is,has,can等)。我的用法来自以下Microsoft准则:

  

使用a命名布尔属性   肯定的短语(CanSeek而不是   CantSeek)。您也可以选择   带有Is的前缀布尔属性,   可以,或有,但只有它添加的地方   值。

MSDN - Names of Type Members

我不相信这种情况总是如此情况并非如此。这些实践可以追溯到.NET 2.0。在那之前,事情是公平的游戏。但是,在较新版本的Framework中清理这些名称会导致各种令人头疼的问题(因此某些框架代码使用约定而某些框架代码不使用)。

它确实使事情更具可读性。甚至使用你问题中的一个例子。你宁愿选哪个?

// ambiguous naming, could mean many things
myTab.TabStop

// definitely a true/false value
myTab.IsTabStop

答案 1 :(得分:3)

Is前缀可以暗示该属性只有一个get访问者,而且正如Thomas和Rachel所说,这是一个bool。如果您打算同时实现getset访问者,并且其类型不是bool,请跳过前缀。

答案 2 :(得分:3)

Is前缀是官方Microsoft框架设计指南的一部分(这并不意味着所有MS产品都遵守它......)。

就个人而言,如果一直使用,我发现它很有用。它会立即告诉您Property是布尔值。您可以使用或不使用,最重要的是要保持一致......

托马斯