4

我在学校学习面向对象编程,在接下来的几个月里,每项作业都涉及骰子游戏和文字游戏,比如 jumble 和 hangman。每个赋值都让我们为这些变量创建一个新类;HangmanWordArray、JumbleWordArray 等。为了可重用性,我想创建一个类(或一系列类),可以在我的作业中重用。我很难想象那会是什么样子,希望我的问题有意义......

让我们假设类将包含带有访问器和修改器的属性,以及返回各种对象的方法……一个单词、一个字母、一个掷骰子。有没有关于如何组织这些课程的经验法则?

每个班级最好保留一个对象吗?或者将所有对象分组到一个类中,因为它们都与“我需要用于作业的东西”相关联?或者按数据类型分组,所以所有数字对象都在一个类中,而所有字符串都在另一个类中?

我想我正在努力解决现实世界中的程序员如何决定如何在一个类或一系列类中对对象进行分组,以及我应该用来构建这种类型的设计场景的一些问题和思考过程.

4

2 回答 2

4

实际上,它因项目而异。没有保证对任何东西进行分组的“正确方法”;这一切都取决于您的需求。它归结为可管理性,这意味着您可以轻松地阅读和更新旧代码。如果您可以将所有游戏包含在一个“游戏”类中,那么这样做就没有错。但是,如果您的游戏非常复杂,包含许多子项和变量,也许将它们全部移到自己的类中会更容易管理。

话虽如此,有一些方法可以对项目进行逻辑分组。例如,如果您有许多用于操作的单独函数(char 到 string、string 到 int、html 编码/解码等),您可能决定创建一个“辅助函数”类来保存它们。同样,如果您的应用程序使用数据库连接,您可以创建一个类来保存和管理共享连接,以及获取查询结果和执行非查询的方法。

有些人试图把事情分解成很多。例如,他们可能会创建一个类来创建和管理数据库连接,而不是上面提到的数据库核心。他们将创建另一个类,然后使用连接类来处理查询。并不是说这种方法行不通,但是当项目被拆分得太小时,它可能会变得非常难以管理。

如果不确切地知道你在做什么,就没有办法告诉你如何去做。如果您在每个项目中重复使用相同的方法,那么也许您可以将它们放在可以共享的地方。我发现找出最有效的方法的最好方法就是尝试一下,看看它是如何响应的!

于 2013-09-04T12:27:48.753 回答
2

我看到人们做的是分解他们的对象和方法,直到每个方法都只是一小部分代码;如果任何方法超过一页代码,他们将尝试进一步分解对象结构以缩短内容。

我个人不反对长方法,只要它们是可读的。我认为“一页限制”往往会造成过多的粒度,并冒着更多而不是更少的混乱风险。但这似乎是当前的时尚。

只是报告我在野外看到的东西。

于 2013-09-04T15:17:17.200 回答