正确的 Class 组织和文件层次结构
Proper Class Organization and File Hierarchy
作为一名计算机编程专业的学生,我需要了解程序开发(更具体地说是游戏开发)在 class 组织和文件层次结构方面的约定。 This 网页解释了命名约定。我最近坐下来记住它。所以展望未来,这不是我想要帮助的那种组织。
如果我要创建像超级马里奥世界这样的通用平台游戏,我该如何组织我的包、classes 等?就包的组织和 类 而言,什么会过分杀伤力,可以这么说,什么会被认为是 "big ball of mud"?
可以理解,这可能是一个见仁见智的问题,也许 Whosebug 上还有另一个问题可以回答我的问题,但是如果有人可以提出他们个人使用的适当约定的任何建议,那将有很大帮助。
从语言的角度来看,包允许在不同的上下文中使用相同的 class 名称。
如果您将它们放在不同的包中,您可能有多个名为 SuperMario
的 class
包符合 class 名称。
从应用程序的角度来看,包允许您表达应用程序的结构。
如果有人想理解您的源代码,他会首先查看包。因此任何好的包装设计
会让这个人更快地理解你的代码。
因此,对于大型代码库,拥有良好、直观的包结构非常重要。
以下是我应用于包装设计的一些原则:
1.您不必预先设计完美的包结构,只要您愿意随着应用程序的发展重构您的包。
2. 将处理应用程序相同方面的 class 放在同一个包中。
com.supermario.gui
com.supermario.model
com.supermario.events
3.当你觉得一个包包含太多class而变得拥挤时,重构为子包。
com.supermario.model 95 classes
重构为
com.supermario.model.ape 30 classes
com.supermario.model.stair 40 classes
com.supermario.model.ton 25 classes
4.当你觉得一个包中的分包太多,拥挤时,重构为分包的分包,或者组合分包:
com.supermario.gui.levela01
...
com.supermario.gui.levelz99
重构为
com.supermario.gui.level
com.supermario.gui.level.a
com.supermario.gui.level.a.01
...
com.supermario.gui.level.z
com.supermario.gui.level.z.99
归根结底,设计没有对错之分,只有设计和结构好不好懂。
作为一名计算机编程专业的学生,我需要了解程序开发(更具体地说是游戏开发)在 class 组织和文件层次结构方面的约定。 This 网页解释了命名约定。我最近坐下来记住它。所以展望未来,这不是我想要帮助的那种组织。
如果我要创建像超级马里奥世界这样的通用平台游戏,我该如何组织我的包、classes 等?就包的组织和 类 而言,什么会过分杀伤力,可以这么说,什么会被认为是 "big ball of mud"?
可以理解,这可能是一个见仁见智的问题,也许 Whosebug 上还有另一个问题可以回答我的问题,但是如果有人可以提出他们个人使用的适当约定的任何建议,那将有很大帮助。
从语言的角度来看,包允许在不同的上下文中使用相同的 class 名称。
如果您将它们放在不同的包中,您可能有多个名为 SuperMario
的 class
包符合 class 名称。
从应用程序的角度来看,包允许您表达应用程序的结构。 如果有人想理解您的源代码,他会首先查看包。因此任何好的包装设计 会让这个人更快地理解你的代码。 因此,对于大型代码库,拥有良好、直观的包结构非常重要。
以下是我应用于包装设计的一些原则:
1.您不必预先设计完美的包结构,只要您愿意随着应用程序的发展重构您的包。
2. 将处理应用程序相同方面的 class 放在同一个包中。
com.supermario.gui
com.supermario.model
com.supermario.events
3.当你觉得一个包包含太多class而变得拥挤时,重构为子包。
com.supermario.model 95 classes
重构为
com.supermario.model.ape 30 classes
com.supermario.model.stair 40 classes
com.supermario.model.ton 25 classes
4.当你觉得一个包中的分包太多,拥挤时,重构为分包的分包,或者组合分包:
com.supermario.gui.levela01
...
com.supermario.gui.levelz99
重构为
com.supermario.gui.level
com.supermario.gui.level.a
com.supermario.gui.level.a.01
...
com.supermario.gui.level.z
com.supermario.gui.level.z.99
归根结底,设计没有对错之分,只有设计和结构好不好懂。