Java接口/实现命名约定

问题:

你如何命名您创建的不同类/接口?
有时我没有实现信息添加到实现名称 – 如接口FileHandler和类SqlFileHandler
当这种情况发生时,我通常在“正常”名称中命名接口,例如Truck,并命名实际的类TruckClass
在这方面你如何命名接口和类?

回答:

命名你的Interface是什么Truck。不是ITruck,因为它不是ITruck它是Truck
Java中的InterfaceType。那么你有DumpTruckTransferTruckWreckerTruckCementTruck等等implement Truck
当您使用Interface代替子类时,您只需将其转换为Truck即可。如List<Truck>。把I放在前面只是一个拙劣的匈牙利风格符号tautology,它只添加了更多的东西来输入你的代码。
所有现代Java IDE的标记接口和实现,什么不是没有这个愚蠢的符号。不要把它称为TruckClass tautologyIInterface重言式一样糟糕。
如果它是一个实现,它是一个类。这个规则唯一真正的例外,总是例外,是AbstractTruck。因为只有子类才会看到这个,你不应该转换为Abstract类,它会添加一些类是抽象的信息,以及如何使用它。你还可以拿出一个比AbstractTruck更好的名字,而不是使用BaseTruck。但是,由于Abstract类不应该是任何面向公众的接口的一部分,因此规则是可接受的例外。使建设者protected跨越这个鸿沟走了很长的路。
Impl后缀也是更多的噪音。更多的重言式。任何不是界面的东西都是一个实现,甚至是部分实现的抽象类。你会把每个Class的每一个名字放在愚蠢的Impl后缀吗?
Interface是关于公共方法和属性必须支持的合同,也是Type信息。实现Truck的所有内容都是Type Truck
查看Java标准库本身。你看到IListArrayListImplLinkedListImpl吗?不,你看到ListArrayListLinkedList。这是一个很好的article关于这个确切的问题。任何这些愚蠢的前缀/后缀命名约定都违反了DRY原则。
另外,如果您发现自己将DTOJDOBEAN或其他愚蠢的重复性后缀添加到对象中,那么它们可能属于package而不是所有这些后缀。正确打包的命名空间是自我记录的,并减少了这些真正设计不理想的专有命名方案中的所有无用的冗余信息,大多数地方甚至不以一致的方式内部遵守。
如果你能想出自己的Class名称是唯一的,则使用Impl后缀,那么你需要重新考虑一个Interface所以当你有一个你有一个情况

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Java Interfaces/Implementation naming convention

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

− 4 = 5