如何命名您创建的不同类/接口?
有时我没有实现信息添加到实现名称中,比如接口FileHandler和类SqlFileHandler
发生这种情况时,我通常以“普通”名称命名接口,如Truck,并命名实际的类TruckClass
在这方面,您如何命名接口和类
命名您的接口是什么卡车。不是ITruck,因为它不是ITruck它是卡车
Java中的接口是类型。然后有自卸车,转运车,破坏者卡车,水泥卡车,等等实现卡车
当您使用接口代替子类时,只需将其强制转换为卡车。如列表中所示<;卡车>。把I放在前面就是匈牙利风格符号重言式只会在代码中添加更多内容
所有现代JavaIDE都会标记接口和实现,而且没有这种愚蠢的标记法也不行。不要称之为TruckClass即重言式与界面重言式一样糟糕
如果它是一个实现,那么它就是一个类。这条规则唯一真正的例外,也总是有例外,可能是类似于AbstractTruck的东西。因为只有子类才会看到这一点,而且您永远不应该将其转换为抽象类类,因此它确实添加了一些信息,说明该类是抽象类以及应该如何使用它。您仍然可以想出一个比AbstractTruck更好的名称,并使用BaseTruck或DefaultTruck,因为abstract在定义中。但是由于抽象类永远不应该是任何面向公众的接口的一部分,我相信这是一个可以接受的例外。让构造函数受到保护对于跨越这一鸿沟有很大的帮助
而Impl后缀也只是更多的噪音。更多的同义反复。任何不是接口的东西都是实现,即使是部分实现的抽象类。你打算在每个<a href=”的每个名字上都加上那愚蠢的Impl后缀吗http://java.sun.com/docs/books/tutorial/java/concepts/class.html“rel=”noreferrer“>Class
接口是一个关于公共方法和属性必须支持的契约,它也是也键入信息。实现卡车的所有东西都是卡车的类型
看看Java标准库本身。您是否看到IList,ArrayListPL,LinkedListImpl?不,您可以看到列表和数组列表,以及链接列表。这里有一个不错的这篇文章就是关于这个问题的。这些愚蠢的前缀/后缀命名约定都违反了干燥原则也是如此
此外,如果您发现自己向对象添加了DTO、JDO、BEAN或其他愚蠢的重复后缀,那么它们可能属于package而不是所有这些后缀。正确打包的名称空间是自文档化的,并减少了这些构思非常糟糕的专有命名方案中所有无用的冗余信息,而这些方案在大多数地方甚至内部都没有以一致的方式遵循
如果你能想出的使你的类名称唯一的办法就是在它后面加上Impl,那么你需要重新考虑是否有一个接口。因此,如果您有一个接口和一个实现,而该实现不是从接口专门化的,那么在大多数情况下,您可能不需要接口
然而,一般来说,对于可维护性、可测试性和模拟,提供接口是最佳实践。请参见有关更多详细信息,请参见此答案
另请参阅Martin Fowler关于接口实现对