什么是归属或属性接口的良好(自然语言)命名方案

iva*_*off 9 c# java naming-conventions

注意:这不是关于在开始时使用或不使用"I"的流行界面命名问题.

我经常遇到命名接口的问题,它表示类的所有物或属性.
(请参阅以下清单)

让我们集思广益,有什么样的接口?

  • 指出类DataStructure,Number,Thing"种类"

  • 表示类Comparator,Executor,Listener"职业"

  • 指示使用Comparable,Executable,Closeable类执行的可能操作

以上对任何人都清楚,但让我们解决我的问题:

  • 指示类HasListener,LinksToRoot,BelongsToParent,KnowsSibling,ContainsChildren,Named,WithDescription,...归属或属性

所以,最后一点是我的问题.我的英语并不完美,但即使我对这些名字感到奇怪.对我来说,他们听起来不那么成功,而不是那么有意义.但我经常最终选择这种名字.

在C#中更令人不舒服的是,界面预计会以'I'
开头:IHasListener,IKnowsSibling,......
听起来就像LOLSPEAK 一样"我可以隐藏一个kitteh,tawtally充满了可爱,OMG!@#! "

那么,我应该如何命名一个表示类的属性或属性的接口?

Yuv*_*dam 9

问题是您选择描述"属性"的方式.

您提供的大多数示例都可以映射到您提到的其他类别.

仅举几例,例如:

HasListener =>实现可监听

ContainsChildren => implements Parent

WithDescription =>实现Descriptable

尝试坚持使用更传统的命名方案,最好是以最佳,更易读的方式描述您的对象.

此外,请确保您没有使用无用的接口过度接口.使它非常简洁,非常简洁,否则你开发人员阅读你的代码会很快丢失.