<h2>构造代码</h2>
<p>以下是一些指导方针,以帮助你的冒险。你知道吗</p>
<p>当开发一个程序时,你通常想把它设计成一个工厂,在一个命令链中优雅的单个模块。而不是僵硬/绝对的代码,没有可维护性、可伸缩性或概念的抽象</p>
<p>像乐高积木一样思考,组件和小砖块,根据它们的类型和任务。你知道吗</p>
<h3>数据结构</h3>
从你的数据结构开始,它们是你工作的基础,简单的制作,你只需要知道你在做什么来制造它们。你知道吗</p>
<pre><code>class Station:
def __init__(self, _id, _lat, _long):
self.id = _id
self.lat = _lat
self.long = _long
</code></pre>
<p>在这里,我们创建了一个类,它可以作为<code>stations.csv</code>信息的归宿,这将允许我们操作PythonObjects,而不是只遍历列表(即使我们最终会这样做,在需要时也不必直接处理它),这也将使您的代码更清晰,更易于阅读,尤其是对你以外的人。你知道吗</p>
<h3>工厂</h3>
<p>通过方法向类中添加功能。你知道吗</p>
<p>我们将首先创建一个工厂类,我们可以称之为<code>Utility</code>,它将负责导入和填充类例如,通过这样做,我们将信息层从逻辑层抽象出来,因此,您将永远不必在主程序循环中操纵解析(我不是在说<code>__main__</code>)。你知道吗</p>
<p>我们先从CSV解析站点信息开始:</p>
<pre><code>import csv
stations = []
with open('stations.csv', 'r') as f:
reader = csv.reader(f)
for row in reader:
clean_row = row.split(“,”)
stations.append(Station(clean_row[0], clean_row[1], clean_row[2])
</code></pre>
<p>(这并没有考虑到列名位于第一行的可能性,并假定它们不是。)</p>
<p>现在我们已经用<code>Station</code>python对象填充了<code>stations</code>列表,我们可以使用这些对象直接访问数据:</p>
<pre><code>print(stations[0].id)
</code></pre>
<p>[…]待续;如有要求。(工作压力有点大)</p>