我有一个项目审查系统,人们对项目进行投票 用户界面还显示他们如何投票,上/下。 用户在投票时可以获得积分。 他们投票的项目对象必须反映选民的数量和其他统计数据。
所以这里有很多事情发生,就像之前有人投票一样,我必须改变他们的投票,然后更新他们的统计数据和投票对象的统计数据。
我怎样才能打破这些不同的任务,因为它们似乎彼此高度耦合并且I cant' figure out a way how to avoid having my code have all these different interactions mixed together.
示例方法:
Set_Vote
1. is this an old vote?
-> if old vote, change old vote to new vote value
-> otherwise, insert new vote
2. update user stats
3. update item voted on stats
4. return a json response to the UI with information to update the screen via ajax etc.
现在看起来很容易解开,直到你开始编码。例如,我不能真正设置用户统计信息,除非我知道#1逻辑的结果,因为如果它是一个旧的投票,我必须扭转先前发生的事情,然后应用新值(与#3相同) )。
#1中的方法是否应该有一个非常丰富的返回对象,告诉我像1)这是一个旧的投票,或者它不是?投票的结果是什么? (也许投票在我的逻辑中因任何原因被拒绝了。)