在整个Silverlight和WPF中,布尔值的属性以 Is (almost all)作为前缀,例如:
的IsEnabled
IsTabStop
IsHitTestVisible
在所有其他Microsoft框架(winforms,BCL,ASP.NET)中,未使用。是什么促使他们的团队摆脱原来的命名惯例 - 这是一个必须坚持的演变或命名命名?
答案 0 :(得分:14)
就个人而言,我总是尝试在布尔值前加上一些更多含义的东西(is,has,can等)。我的用法来自以下Microsoft准则:
使用a命名布尔属性 肯定的短语(CanSeek而不是 CantSeek)。您也可以选择 带有Is的前缀布尔属性, 可以,或有,但只有它添加的地方 值。
我不相信这种情况总是如此情况并非如此。这些实践可以追溯到.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。如果您打算同时实现get
和set
访问者,并且其类型不是bool,请跳过前缀。
答案 2 :(得分:3)
Is
前缀是官方Microsoft框架设计指南的一部分(这并不意味着所有MS产品都遵守它......)。
就个人而言,如果一直使用,我发现它很有用。它会立即告诉您Property是布尔值。您可以使用或不使用,最重要的是要保持一致......
托马斯