当前位置: 首页 > 面试题库 >

Java接口/实现命名约定

韦泳
2023-03-14
问题内容

如何命名你创建的不同类/接口?有时我没有实现信息要添加到实现名称中,例如接口FileHandler和类SqlFileHandler

发生这种情况时,我通常使用“普通”名称来命名接口,例如Truck并命名实际的类TruckClass

你在这方面如何命名接口和类?


问题答案:

命名你的名字InterfaceTruck。不是ITruck因为它不是一个ITruck而是一个Truck

InterfaceJava中的anType。然后你有DumpTruckTransferTruck,WreckerTruck,CementTruck,等那个implement Truck

当你使用Interface代替子类时,只需将其转换为即可Truck。就像在List 。把I前面的只是匈牙利风格的符号同义反复,增加了什么,但更多的东西类型代码。

所有现代Java IDE都标记了Interfaces and Implementations(接口和实现),而没有这个愚蠢的符号就没有。不要TruckClass说重言式和重言式一样糟糕IInterface

如果是实现,则为类。该规则唯一真正的例外(总是存在例外)可能是AbstractTruck。由于只有子类会看到这种情况,因此你绝对不应将其强制转换为Abstract类,因此它确实添加了一些信息,表明该类是抽象的,以及如何使用它。你仍然可以拿出一个比一个更好的名字AbstractTruck,并使用BaseTruckDefaultTruck代替,因为abstract是在定义。但是,由于Abstract类绝不应该是任何面向公众的接口的一部分,因此我认为这是该规则的可接受的例外。使构造函数protected跨越这一鸿沟大有帮助。

而Impl后缀只是更多的噪音。重言式。任何不是接口的东西都是实现,甚至是部分实现的抽象类。你是否要Impl在每个班级的每个名称上加上这个愚蠢的后缀?

Interface是关于公共方法和属性必须支持的合同,它也是Type信息。一切都实现Truck是一个类型的Truck

查看Java标准库本身。你看IList,ArrayListImpl,LinkedListImpl?不,你看到ListArrayList,和LinkedList。这是一篇关于这个确切问题的好文章。这些愚蠢的前缀/后缀命名约定都违反了DRY原则。

另外,如果你发现自己在增加DTOJDOBEAN或者其他愚蠢的重复后缀的对象,然后他们可能属于一个包,而不是所有的后缀。正确包装的名称空间可以自我记录,并减少这些真正构思不当的专有命名方案中所有无用的冗余信息,而大多数地方甚至在内部都不以一致的方式坚持这些专有命名方案。

如果你想使自己的Class名字唯一的是后缀Impl,那么你需要重新考虑Interface一下。因此,当你遇到的情况下,你可能有一个Interface和一个Implementation不是专门针对的情况下,Interface你可能就不需要了Interface



 类似资料:
  • 问题内容: 我在一个Java Web应用程序上工作,该应用程序使用Spring进行依赖注入,并使用JMock来模拟单元测试中的这些依赖。 目前,在如何命名所使用的某些接口方面,我们的团队还处于不同意见。命名域中具有多个实现的接口没有问题,这很简单。但是,当涉及到我们只有一个实现并且打算将来仅拥有一个实现的接口时,我们遇到了麻烦。 我们拥有此类接口的原因纯粹是为了模拟,例如,我们有在单元测试中模拟的

  • 问题内容: 我将发布我的代码: 应该注意的是,ServerSession也是一个接口,对我来说,调用“ ServerSessioner”是一种感觉。 我正在玩用IsRole()和AssumeRole()创建接口的想法,但是“ Roler”似乎很奇怪。我突然意识到,除了标准的“ er”后缀之外,我真的不知道或者从未遇到过接口的命名约定。我确实记得VS C ++约定是在所有内容前都加上“ I”。这是“

  • 问题内容: 我的完整变量名称是“唯一代码”,但是我希望此变量是“ ucode” -ish。 那么考虑Java命名约定是正确的吗? 编码 uCode UCode 问题答案: 请参阅编码约定。对于变量,建议使用驼峰式大小写。回覆。命名,我本以为 将是最合乎逻辑的选择(我知道那不在您的选择列表中)。任何变体在我看来都是 unicode 的缩写,我认为这是一种误导。以上不是一个太长的名称(例如,它不是Ab

  • 问题内容: 大多数OO语言的接口名称都以大写的I开头,为什么Java不这样做呢?不遵守该公约的理由是什么? 为了说明我的意思,如果我想拥有一个用户界面和一个用户实现,那么在Java中有两种选择: 类=用户,接口= UserInterface 类= UserImpl,接口=用户 在大多数语言中: 类=用户,接口= IUser 现在,你可能会争辩说,你总是可以为用户实现选择一个最具描述性的名称,问题就

  • 问题内容: 我已经阅读了“ C#匿名实现接口(或抽象类) ”线程以匿名实现接口。但是我想知道使用委托或任何类似方法的.NET 2.0(NO LINQ)是否也可能实现 我从JAVA知道以下可能: (我希望我还记得,是一段时间以前我使用JAVA,但我想它是类似的东西)。每当方法需要接口的实例并且仅被调用一次时,这可能会有所帮助,因此无需为此单一方法创建新的类。 问题答案: .NET 2.0还支持匿名委

  • 问题内容: 在Java中,使用“ 非法 ”(如)与“ 无效 ”(如)之间在语义上有区别吗? 在分配过程中,编写的子类来表示一系列无法​​分词的输入字符变得很有用,我想知道约定是使用还是。 到目前为止,我能找到的唯一区别是似乎更喜欢“非法”,而更喜欢“无效”。但是,也存在的子类。 问题答案: 您可以 合法 使用API​​并仍然拥有 无效 数据;都是语义。