我有一个属性,指示是否可以修改实例。它应该命名为 MayModify 还是 CanModify ?
答案 0 :(得分:29)
IsModifiable
CanModify
AllowChanges
MayModify听起来太条件了,有点灰色而不是布尔黑白。
我通常会使用动词后跟名词。即:
允许,然后更改。
CanModify是我认为令人困惑的两个动词/动作。
答案 1 :(得分:21)
CanModify
是一个非常好的名字,但在这种情况下会出错。命名属性时,您必须考虑典型用法。
MyClass widget;
if (widget.CanModify) { ... }
显然,正在修改其他内容的小部件。但是你想表达消费者是否可以修改小部件。所以这个名字会非常糟糕。
我在这种情况下的偏好是:
if (widget.IsWritable) { ... }
或
if (widget.IsReconfigurable) { ... }
取决于“修改”小部件的含义。
但即便
if (widget.CanBeModified) { ... }
会比CanModify
或MayModify
好得多,两者都听起来像是widget
允许修改其他内容。
答案 2 :(得分:3)
都不是。
IMO你应该使用Is
前缀。有点推荐。
所以我会选择IsModifiable
答案 3 :(得分:3)
无法修改的实例是只读的,不是吗?那么IsReadOnly
?
答案 4 :(得分:2)
CanModify 更好,因为可以代表能力。但五月更像是某人不反对,而不是那么明确。
答案 5 :(得分:0)
名称“IsReadOnly”有时已经用于此类上下文,因此它可能是一个很好的名称。不过,我认为区分三种类型的实例是有用的:
如果IsReadOnly为false,那么显然一个项目是类型1.但是,如果它是真的,则可能不清楚它是2型还是3型。根据对象的性质,拥有IsFrozen属性可能会有用除了IsReadOnly。想要知道对象是否可以在外部更改的代码将使用IsFrozen;想要知道是否允许更改对象本身的代码将使用IsReadOnly。