2012-11-20 41 views
1

假设您使用的是API,您需要设置一个值以启用或禁用组件。命名约定 - isEnable vs isDisable

你宁愿:

control.isEnable = true 

control.isDisable = false 

伊莫,第一个似乎更加 “直观”,但你有任何想法,为什么?

回答

1

双底片在简单的英文和计算机代码中都不好。

你不反对吗?

1

标识符应该使用调用者更容易感兴趣的意义。在某些情况下,这可能意味着拥有多个属性可能乍看起来似乎是多余的。例如,一个接口可能同时提供IsWritableIsImmutable属性。尽管某些可写的东西不可能是不可改变的,反之亦然,但是对象可能既不可写也不可永不变(例如,它可能是一个实时只读的数据视图,可以通过其他方式进行更改)。要写入对象的代码应该测试IsWritable;想要知道对象是否应该防守复制的代码应该测试IsImmutable

请注意,.net中的某些类违反了这一原则。例如,根据这个原则,测试WeakReference的有效性的属性应该被称为IsDead,因为如果WeakReference已经死亡,将会采取行动的代码可能对引用没有兴趣,如果它是活着的,但是将采取行动的代码如果参考文献还活着,应该几乎总是捕获Target并测试它是否为null,而不是测试WeakReference是否有效。

1

都没有。形成问题的名称,如isFoo意味着访问者。

if (control.isEnabled()) 

对于字段的名称,我更喜欢形容词。

control.enabled = true 

即使你首选的问表,应该用过去-现在分词形式,即isEnabled。英文中没有任何内容被描述为“可用”。

至于正面/负面我同意NimChimpsky 99%的时间。我现在正在构建的应用程序有另一个1%的例子,其中预期状态为“好”,我需要一个形容词来描述负面情况 - 在此例中为rejected

0

尽管我同意使用“来电者更容易感兴趣”的含义,但另一种选择是考虑将默认初始情况设置为False,以便它在创建时已经有效并且不需要被初始化到True