擅长:python、mysql、java
<p>你的任务类看起来像<a href="https://en.wikipedia.org/wiki/God_object" rel="nofollow">god object</a>。你知道吗</p>
<pre><code>class Quest:
def __init__(self, target, name, ID, required_level, objective_requirements, reward_gold, reward_exp, reward_item):
</code></pre>
<p>看看需要多少投入。你知道吗</p>
<p>您应该尝试隔离它的关注点,并将其划分为更多的类。你知道吗</p>
<p>一个类应该只有一个关注点。你知道吗</p>
<p>也许你应该分给另一个班。你知道吗</p>
<p>另外,把客观要求分门别类也很有意义。甚至,一个类对应一个需求,然后简单地将客观需求列为一个需求列表。你知道吗</p>
<p>因此,您可以声明需要满足列表中的所有需求。但是每个需求都可以包含替代的需求,例如,将项目A交给人A或人B。让需求类处理or,而任务类处理and。你知道吗</p>
<p>一旦你关闭了任务类,你应该创建一个<a href="https://en.wikipedia.org/wiki/Factory_method_pattern" rel="nofollow">QuestFactory</a>,它创建任务,创建一个任务应该检查没有其他具有相同id或相同名称的任务,或者计算有多个任务等等</p>
<p>如果您绝对想计算相同id/名称的出现次数,请不要重新设计轮子,使用类似pandas或类似的python数学库。你知道吗</p>
<pre><code>import pandas as pd
df = pd.DataFrame("ID":[x.id for x in quests], "Name":[x.name for x in quests])
print df.ID.value_counts()
print df.Name.value_counts()
</code></pre>