0

我只是想看看我是否以最好的方式编码。

我有一个 Player、Pet 和 Health 类。 Player 有一个 feedPet 方法,它调用 Pets 方法,然后调用 Health 类中的 setFeed 方法。

在 setFeed 方法中,我根据宠物的喂养情况调整健康状况。它还检查 Pet 是否已满,然后将调整后的饥饿级别传递给 setHunger 方法,该方法简单地将饥饿设置为等于饥饿级别参数。

现在宠物也有一个getHungry方法,如果宠物没有喂饱,它就必须饿了。我在这里所做的是访问宠物健康类并调用 setNotFed 方法,在这里它计算宠物的适当饥饿水平,然后将该水平传递给 setHunger 方法。

这是最正确的做法吗?我曾想过将 setFeed 和 setNotFeed 功能放入 setHungry 方法中,但这会变得混乱和混乱。

非常感谢任何见解!

4

1 回答 1

1

您的 setHunger 方法是否在 Pet 类中?也许它更适合健康类。虽然饥饿确实是“宠物”的一种属性,但如果你为宠物开设了“健康”课程,那么在那里组织起来可能会更好。这取决于“健康”是否应该专门代表“损害”之类的东西,也许更具体地说是外部造成的损害,或者任何被归类为“生命迹象”的东西,因为没有更好的术语。我想如果你这样做,大多数相关方法的组织都会到位。但是既然你来这里是为了回答......

当您学习(面向对象)编程时,您将学习如何根据其目的组织类/方法,但在现实生活中它变得更加复杂......

  • 我会说你的 Player 课程很好。feedPet 方法在那里是完美的。
  • 看似矛盾,其实不然:getHungry 方法应该是 Pet 的一部分,因为它是一种行为,而饥饿(与其健康有关)是健康的一个领域。所以...
  • setNotFed 和 Hunger 是饥饿场的突变体,属于它们所在的位置(在健康中)

我认为这就是一切。再次,我建议 Pet 行为和行为由或 - 对宠物进行,并且任何修改与宠物的“健康”相关的内容都适合实际的健康类。

我建议您查看 MINECRAFT.JAR 反编译并探索课程!它们编码良好且易于导航,而且我敢打赌您所做的许多事情都以自己的形式存在!我的答案基于我在检查时所看到的内容!

于 2013-05-04T01:47:24.750 回答