當編程一些重要的東西時,我恰好有點挑剔。我試圖通過速度和複雜性來找到最好的方法。由於我在前3個月一直在學習Rails,所以我試着找到最好的技術。我想問你,你將如何去寫一些像這樣的代碼:組織代碼的軌跡
@defender = User.find_by_id(user_id)
@attacker = current_user.clone
@attacker_starting_attribs = current_user
@defender_starting_attribs = @defender.clone
@defenderWeapon = @defender.getEquippedWeapon
@attackerWeapon = @attacker.getEquippedWeapon
@combat = Combatant.fight(@attacker, @defender)
此代碼是關於瀏覽器的遊戲兩個人之間的戰鬥結果。代碼運行良好,但我在編碼方面存在一些問題。事實上,我知道我的代碼在這裏很糟糕,這就是爲什麼我問你一個更好的版本會是什麼。讓我解釋一下在這段代碼中會發生什麼。
@defender由user_id給出,所以我想這部分是需要的。現在,在@attacker中我克隆了current_user。原因是Rails在對象上工作,current_user將在Combatant.fight中更改。我需要新的惠普和舊的惠普,這就是爲什麼我克隆的對象。防禦者和攻擊者開始attribs說明這個概念。現在,我得到實例變量中的武器,以便我可以在最終視圖中獲取他們的信息。
然而,武器內部的鬥爭功能需要,我在鬥爭()內再次執行兩次相同的getEquippedWeapon。我不太喜歡打架(@attacker,@ defender,@attacker_weapon,@ defender_weapon),但我不喜歡重複的想法。所以,我想就此發表意見。
@combat是一個包含戰鬥結果的散列。撲滅發生,我在視圖中回到散列。
我不喜歡我在那個舞臺上的編碼,我想要你的意見。你會怎麼做?有沒有設計模式?請告訴我你的意見。
Thanx :)
嘗試在[Code Review SE站點](http://codereview.stackexchange.com/)上詢問此問題以獲得更好的結果。 – Shaun 2011-01-28 03:33:35
如果你想讓我遷移我可以。然後,您可以將您的SO帳戶關聯到codereview並從此處獲取。將來可能會有這樣的問題一定會被移動。 – Will 2011-01-28 21:50:34