注意:这是不关于的热门界面命名问题 在开头使用或不使用“I”。
我经常遇到问题 界面,表示类的归属或属性 (请参阅以下列表)
让我们集思广益,有什么样的界面?
表示班级的“kind” DataStructure,Number,Thing
表示班级的“专业” 比较者,执行者,听众
表示使用班级执行可能的操作 可比较,可执行,可关闭
以上所有人都清楚,但让我们来解决我的问题:
所以,最后一点是我的问题。我的英语不完美, 但即使我对这些名字感到奇怪。 对我来说,他们听起来不那么成功,而不是那么有意义。 但我经常最终选择这种名字。
在预期接口的C#中甚至更加不舒服
从'我'开始:
IHasListener,IKnowsSibling,......
对我来说听起来像LOLSPEAK “我可能会对kitteh感到厌烦
可爱,天啊!@#!“
那么,我应该如何命名一个指示所属或的界面 一类的财产?
答案 0 :(得分:9)
问题在于您选择描述“属性”的方式。
您提供的大多数示例都可以映射到您提到的其他类别。
仅举几例,例如:
HasListener =>实现可听
ContainsChildren =>实现父
WithDescription =>实现可描述
尝试坚持使用更传统的命名方案,最好是以最佳,更易读的方式描述您的对象。
此外,请确保您没有使用无用的接口过度接口您的类。使它非常简洁,非常简洁,否则你开发人员阅读你的代码会很快丢失。
答案 1 :(得分:4)
在您提出的一些问题案例中,我认为通过“从另一方面”看可能会有答案:
HasListener -> Speaker
LinksToRoot, HasParent -> Child (or perhaps Node)
ContainsChildren -> Parent
当然,不同的案例或多或少都会很明显。
答案 2 :(得分:0)
我认为你可以把你正在做的一些事情变成“专业”类型的界面:
HasListener
- > ListenerContainer
WithDescription
- > DescriptionContainer
(Describable
也可能有效,具体取决于此说明中“描述”的具体内容)许多其他界面似乎与树结构有关。我建议根据它们在树中的功能命名它们。
ContainsChildren
- > Parent
或Collection
BelongsToParent
- > Child
至于其他的,我需要更多地了解这些接口的用途。其中一些,如Named
,可能被命名为正常。
答案 3 :(得分:0)
这些声音对我来说听起来很糟糕,我同意。 “HasListener”听起来更像是一个方法调用,应该返回一个布尔值而不是一个接口名称。
不应存在接口来保存/存储类的属性。它们应该用于概述实现它的所有类应该遵循的关系。我个人坚持“是一种”关系。如果存在直接关系,即猫“是(n)”动物,那么我将为它创建一个界面并将其命名为Animal给它一个合理的名称。
我真的很想知道“HasListener”接口概述了什么。它到底是做什么用的?为什么不能将它命名为MyProjectListeners(用项目名称替换MyProject)来描述为该项目定义的监听器必须遵守的内容?
答案 4 :(得分:0)
HasListener 没问题,还有可听。我没有任何反对的东西。
但是 IHasListener 很糟糕:首先是因为我们不需要I前缀来告诉它是一个接口(看看类签名!),第二个因为它听起来像“我不知道”不会说英语。
我使用I前缀创建的Java中唯一的接口是 IRule 。 :)
答案 5 :(得分:0)
我实际上非常喜欢“IHasListener”方法。
在.NET Framework中,您可以在以下接口中找到它:
“可监听”这样的名称表明该实现会进行监听,而不是它包含一个监听器。 IHasListener清楚地说明了它的作用。