2013-05-04 93 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