当编程一些重要的东西时,我恰好有点挑剔。我试图通过速度和复杂性来找到最好的方法。由于我在前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