Wpf 我启用了还是启用了?

Wpf 我启用了还是启用了?,wpf,silverlight,naming-conventions,Wpf,Silverlight,Naming Conventions,在Silverlight和WPF中,布尔值属性的前缀为Is(),例如: i启用 IsTabStop ishitestvisible 在所有其他Microsoft框架(winforms、BCL、ASP.NET)中都没有使用。是什么促使他们的团队改变了最初的命名惯例?是进化还是遗漏命名必须坚持?is前缀可以暗示一个事实,即该属性只有一个get访问器,正如Thomas和Rachel所说,这是一个bool。如果您打算同时实现get和set访问器,并且其类型不是bool,请跳过前缀。就我个人而言,我总

在Silverlight和WPF中,布尔值属性的前缀为Is(),例如:

  • i启用
  • IsTabStop
  • ishitestvisible

在所有其他Microsoft框架(winforms、BCL、ASP.NET)中都没有使用。是什么促使他们的团队改变了最初的命名惯例?是进化还是遗漏命名必须坚持?

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

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

不使用 肯定短语(CanSeek代替 坎特西克)。或者,您还可以 将布尔属性前缀为Is, 可以,或已经,但仅限于增加 价值观

我不相信一直都是这样,不是一直都是这样。这些实践可以追溯到.NET2.0。在那之前,一切都是公平的。然而,在较新版本的框架中清除这些名称会引起各种各样的麻烦(因此一些框架代码使用约定,而一些不使用约定)

不过,这肯定会让事情更具可读性。甚至用你问题中的一个例子。你想要哪一个

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


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

就我个人而言,如果一直使用,我觉得它很有用。它会立即告诉您属性是布尔值。不管你是否使用它,最重要的是保持一致性


托马斯

我不同意,我知道我以前在一些物体上设置了IsEnabled。这可能是因为它是一个布尔值,不能设置为任何值。。。我认为这是为了表明该物业是bool@ThomasRachel——事实上,这就是我想说的,但我设法写了一些其他的东西:)有趣的是,这是一个新的建议,解释说大多数winforms没有Is前缀。@Chris s——很难在第一次就把所有事情都做好。这可能是从.NET 1/1.1中吸取的教训之一,对于TabStop,“Is”添加了明确的值:属性的值告诉您某个内容是否是tab stop;该值本身不是制表位。对于启用,附加值更微妙。这里的“是”区分是启用还是启用,不管是什么,可能是启用的复制对象。另一个附加值是,对象读起来更像英语:myObject.IsEnabled.@EdwardBrey将“enabled”作为名词来读对英语来说是一种延伸。因此,我认为删除“Is”是合适的,在布尔属性前面添加
Is
,可以添加一个事件,通知积极的更改,而不会出现名称冲突。例如,您可以启用属性
IsEnabled
,启用事件
禁用。这种事件命名将与现有事件一致
FrameworkElement.Initialized
。因此,或许其理由是一眼就可以清楚地看出,该成员是一个财产,而不是一个事件。或者也许是为了不排除在未来增加此类事件。或者别的什么;我只是在猜测,和
// definitely a true/false value
myTab.IsTabStop