在Ruby中,当没有合适的英语“<verb> able”时,mixin的命名约定是什么?</verb>

时间:2013-05-17 07:23:05

标签: ruby naming-conventions mixins

示例:我有一个Person类和一个Role类。我想将RolePerson中的角色功能提取到mixin中。我得到两个mixins:Actable包含在Role中,Adaptable包含在Person中。

我有时候想不出适合的英语单词。在上面的例子中,适应性似乎更适合角色而不是人,因为角色可以适应,因此是适应性的。一个更好的名字将是多才多艺的,但这打破了mixin名称的惯例,以...结束。 (但它仍然是一个形容词。)

其他示例是当我想添加允许检查的模块时,如果允许Person查看其他人。你怎么找到这个结尾的名字? Viewable似乎不合适,可以查看的人应该是可见的。我暂时坚持showable(使用控制器中的方法名称)。但话说再说一遍,可以展示的人,应该不是那个想要展示的人。

所以我想我的问题是,当没有正确的英语形容词结尾...能够用于模块名称时,我应该选择另一个不能结束的形容词...能否或我应该给它一个不太合适的名字?

2 个答案:

答案 0 :(得分:1)

我倾向于详细说明并命名模块,其中包含更长的代码说明;就像是: PersonRoleFunctionality

我也经常命名它;并将其与其他mixin一起归档到一个目录,该目录适用于从中提取的对象,所以我最终得到了 include Extracts:Person:RoleFunctionality目录中的app\models\extracts\person\

答案 1 :(得分:1)

那么前缀怎么样?

CanDoSomethingMoreComplexThanASingleVerb

编辑虽然我知道我本身并不提供约定(感谢arulmr提出它),但需要用Can命名约定来描述某些东西是许多公司事实上的本地化命名标准的一部分,因为它允许对您尝试混合的功能进行更详细的描述。例如CanActCanBeCastInPlay是使用原始作者的PersonRole上下文的不同属性,比ActablePlayCastable更容易理解和理解或其他等价物。

底线:不要仅受语言和惯例的限制:)