首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将设计模式名称嵌入到接口名称中是一种好的风格吗?

将设计模式名称嵌入到接口名称中是一种好的风格吗?
EN

Stack Overflow用户
提问于 2013-04-21 03:22:53
回答 4查看 231关注 0票数 0

将设计模式名称嵌入到适当的接口中是不是一种好的做法/风格?比方说,如果它是装饰器设计模式,则将抽象装饰器命名为IDecorateInterfaceNameAbstractClassNameDecorator,如果该模式使用了抽象类。例如,java /O类使用装饰器模式,但将抽象装饰器类命名为FilterInputStream,而不是在名称中的某处添加模式名称。或者,如果提供了足够的文档,添加这种类型的信息会变得多余吗?在我看来,如果从头到尾都遵循这个约定,那么只需查看代码就可以更容易地了解使用了哪些模式,但API没有遵循这样的规则的事实让我感到困惑。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-04-21 03:35:05

幸运的是,语言设计者为我们提供了一些这方面的见解。

  • Java naming guidelines
  • C# Naming guidelines

在命名类、方法和变量时,您的首要目标应该始终是提高可读性(从而向代码的读者传达实际正在做的事情)。在装饰器模式的示例中,在类的名称中包含“AbstractDecorator”是不相关的,因为这不会告诉任何人对象实际做了什么。

这实际上是基于具体情况-例如,在许多MVC框架中,将" Controller“后缀添加到作为控制器的每个类是常见的约定(根据设计模式)。在这种情况下,将设计模式添加到名称可以帮助用户理解对象正在做什么。

当有疑问时,只需问自己这个问题:“这会让我的代码更容易阅读和理解吗?”

票数 3
EN

Stack Overflow用户

发布于 2013-04-21 03:36:29

我的意思是,知道使用了哪种模式并不重要。重要的是类是什么和做了什么。FilterInputStream清楚地说明了这一点。它实现了装饰器模式的事实是一个实现细节,如果你知道这个模式,这很容易识别,如果你不知道,这不会增加太多的信息。

也就是说,一些模式名称清楚地描述了类是什么,比如工厂或策略,因此它们通常用作类名的一部分。例如,SecretKeyFactory是密钥的工厂,并实现工厂模式。但是我不喜欢像RuntimeSingleton或FileFilterStrategy这样的类名。这些后缀是噪声。

顺便说一句,我也讨厌C#这个接口的I前缀约定。这是同样的一种噪音,使代码的可读性更差,并且不会添加有意义的信息。

票数 1
EN

Stack Overflow用户

发布于 2013-04-21 03:34:58

如果您希望将您装饰器暴露给另一个应用程序,则可以使用接口,例如,基于WCF体系结构n层的开发必须是实现接口。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16124242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档