2013-05-04 95 views
0

我只是想看看我是否能够以最好的方式编码。正确使用两种方法来执行类似的任务

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

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

现在宠物也有一种方法getHungry,如果宠物没有喂它就得饿了吧。我在这里所做的就是访问宠物健康类并称为setNotFed方法,在这里它计算宠物的适当饥饿等级,然后将该等级传递给setHunger方法。

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

任何洞察力非常感谢!

+1

我有一个规则,我第三次写本质上相同的代码,我会把它变成一个普通的功能。只有两种类似的方法不会打扰我。 – 2013-05-04 01:19:06

回答

1

在Pet类中你的setHunger方法是?也许它会更适合健康课程。虽然真的是饥饿明显是“宠物”的一个属性,但如果你有一个宠物的“健康”类,它可能会更好地组织在那里。这取决于“健康”是否应该具体表示类似“损害”的东西,也许更具体地说是外部造成的损害,或者因缺乏更好的术语而被归类为“生命体征”的东西。我想如果你这样做,大部分相关方法的组织都会落实到位。但是,既然你来到这里寻找答案答案 ...

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

  • 我想说你的Player类是好的。 feedPet方法在那里非常完美。
  • 这似乎是矛盾的,但它不是:该getHungry方法应该是宠物的一部分,因为它是,因为它是一个行为,而饥饿(有关其健康)是健康的领域。所以...
  • setNotFed和饥饿饥饿场(S)的变异符,和属于他们的(健康)

我认为这一切。同样,我建议宠物的行为和对宠物所做的行为属于宠物,任何修改与宠物“健康”有关的东西都适合于实际的健康课程。

我建议你看看MINECRAFT.JAR解压缩和探索类!它们编码良好,易于导航,我敢打赌,你所做的很多事情都是以它自己的形式出现的!我根据我记得在检查这个时看到的答案来回答!

+0

嗨,谢谢你的回复,setHunger是一种健康方法,并且得到Hungry和eat是宠物的方法。虽然谢谢你与我确认了一些事情,但答案很好。我会看看这个我的世界的罐子。不知道你最后一点的意思是“以其自己的形式吗?” – whiteElephant 2013-05-04 01:54:58

+1

我在那儿嘲笑我的英语,嘿。我的意思是说,这是一个游戏,它的原理与你的操作方式相同,不管游戏风格如何(假设Minecraft是一款带有类似系统的宠物的3D沙盒游戏,你可能正在制作浏览器客户端侧卷轴,但它仍然适用,即使它们是2种不同的“形式”)。这就是我的意思。很高兴我能帮上忙!如果您有其他问题,请告诉我。 – Xenalin 2013-05-04 05:10:17

+0

为确认你的评论而欢呼,Iv找到了这个我的世界杯罐子,并且他们周围的人很少,不确定什么是安全的,什么不可以推荐给我? – whiteElephant 2013-05-06 04:40:42