我应该避免命名我的类与其他外部包/库中的类相同,但代价是牺牲名称简洁性并增加一些复杂性?
例如,在我的应用程序中,我有一个名为UIComponents的包,它包含可重用的组件,GUI的某些部分可以用于常见任务。例如Form,Grid,Window。由于我正在编写一个模拟器,我应该使用像SimForm,SimGrid和SimWindow这样的东西来避免命名它们与我使用的某些库中的组件相同吗?
或许基于意见,但这就是我的想法:这会让人感到困惑吗?
当我制作纸牌游戏时,我倾向于有一个名为Card
的课程。当我第一次尝试在文件中使用它时,我的IDE问我:“你的意思是my.package.Card
还是javafx.smartcardio.Card
?”好吧,显然我对smartcardio没什么兴趣,所以使用Card
作为名字对我来说不是问题。
现在假设我正在使用JavaFX制作一个房屋设计师。 JavaFX有一个名为Window
的类,我可能会将它用于我的应用程序。因此,我想说我想避免命名我自己的自定义窗口类Window
,并使用其他类似的东西,如HouseWindow
......或类似的东西。
虽然您应该检查一些惯例,但在我看来,这取决于您,因为您是负责了解业务详细信息并使您的代码清晰,可读并且能够在未来。
您的班级名称应该很容易识别,并且毫无疑问您正在处理的业务实体以及与您的业务(直接)无关的每个班级都应该有更好的名称。
即使使用一个库中存在的名称命名您的类也没有问题,但只有在您认为它是正确的名称并且没有其他人能够更好地解释这个概念时,您应该这样做。
如果您的类是另一个包中的类的替换或扩展,并执行类似的功能,那么创建您自己的名称前缀就足够了,就像您建议的那样。直接在我的代码中看到SimForm,SimGrid是一个非常有用的提示,告诉我我正在使用你的类,而不是JDK类。
您可以拥有任意数量的同名类,直到它们都在不同的包中。
在日常生活中,我们尝试在每个模块/组件中使类唯一。在极少数情况下,我们必须使用完全相同的名称。