我在python中写了一些小东西,我正在加强构建更具挑战性的东西。
我做的最后一个项目基本上包含了一些文本文件,对每个文件做了一些正则表达式,并以有用的方式构建了数据,因此我可以调查一些数据。
我发现在最后还是很难记住哪个部分在文本的哪一部分进行操作,特别是随着代码的增长,因为我“修复”了整个过程。
在我的脑海中,我想我的代码是一系列小的互连模块 - 我可以留下一些知道他们做什么以及它们如何互操作的离散.py文件。
向我展示如何定义函数的同事基本上意味着我最终得到了一段很长的代码,我发现这些代码很难导航和排除故障。
(1)这是正确的方法吗?或者有一种更简单的方法来制作在它们之间传递变量的模块,我想我会发现这更好,因为我可以更好地可视化流程(主要是因为我几年前习惯在MATLAB中工作)我猜/ p>
(2)您是否可以使用此方法预先计划各种功能层,以便为您提供“地图”?
(3)有没有这种东西易于访问的教程?我经常发现教程突然跳过我的脑袋......
感谢。
答案 0 :(得分:4)
(1)可以在单个.py文件中编写精细程序
(2)在任何编程风格中,总是(除了特殊的,硬件驱动的情况)最好将代码分解为完成离散任务的短函数(或方法)。
(3)经验丰富的程序员会经常以一种方式编写代码,发现问题,编写更多代码或不同代码,并考虑是否可以将任何现有代码分解为单独的函数。
您需要执行此操作的标志是当您按顺序分配变量以向下传递数据时。永远不要将代码复制粘贴到其他地方,即使是更改,除非将其作为一个函数分解,并用调用该函数替换原始代码。
(4)在许多情况下,将代码组织到类和对象中会很有用,即使在技术上必要这样做也是如此。它可以帮助您看到您已经在某些数据集合上定义了一组完整的操作。
(5)编程实际上很难。即使是那些有天赋的人,也需要一段时间才能感到舒适。举个例子,当我在攻读硕士学位时,我和我的(相当有才华的)朋友们都觉得只有在我们的最后一年,我们才开始获得一定程度的设施和能力(这些都是自那以后一直在编程的人至少他们十几岁的时候)。
重要的是要不断学习和提高,而不是一遍又一遍地重复相同的一两年的经验。
(6)为此,阅读书籍和文章。尝试新事物。认为
答案 1 :(得分:3)
其他人建议从开源项目等以及教程和教科书中学习其他有经验的程序员代码,这是一个很好的建议。有时候你需要一个类似的例子来让你走上正确的道路。
我还建议您将自己的挫败感和经验作为反馈来帮助自己改进。每当您发现自己正在考虑以下任何一项时:
这意味着您的技术有改进的余地。专家和初级程序员之间的许多区别在于能够执行以下操作:
答案 2 :(得分:0)
如果没有您的代码片段以供参考,很难知道哪里开始回答您的问题。您可能希望将代码发布到免费的公共网站,例如http://www.bitbucket.org/或http://www.github.org/,然后包含一些关于代码的小代码段的特定问题,并将链接返回到您的存储库。这使得受访者可以查看代码并对其进行评论。 (这两个选项甚至包括颜色语法突出显示,感兴趣的通讯员甚至可以拉下代码,进行更改并推送补丁或创建自己的代码分支并向您发送“拉”请求,以便您可以查看差异并将选定的变更集拉回到您的分支中。)
更一般地说,有许多方案设计方法。您似乎试图重新发明一种非常古老的方法,称为“功能分解” - 将手头的总体任务看作一个函数(摘要文本文件)并考虑如何将其分解(分解)为较小的函数(摄取输入文件,解析它们,准备结果,输出它们),然后将它们进一步分解,直到你的单元足够小,可以在编程环境(Python)中轻松编码。
现代方法(和工具)倾向于使用面向对象的设计方法。您可以尝试阅读:http://www.itmaybeahack.com/homepage/books/oodesign/build-python/html/index.html