【发布时间】:2016-12-22 13:31:16
【问题描述】:
我一直在努力设计我的大型程序。总体布局是这样的:
def mainFunc(parm_1, parm_2, ..., parm_n):
# do step 1
# do step 2
# ...
# do step m
我的问题是:我应该让每个步骤都有自己的功能吗?我永远不想将任何步骤称为 mainFunc 之外的函数。那么,或者,将每个步骤都设为 sn-p 会更好吗?调用函数和执行做同样事情的 sn-p 之间的实际区别是什么? (当然假设在 sn-p 的末尾删除了所有不需要的变量。)
我真的不知道从长远来看哪种方法更好。任何建议将不胜感激。
【问题讨论】:
-
调用外部函数和就地粘贴代码几乎没有区别——所以算了吧。将代码分组为函数/方法的原因是为了使代码可重用(如果您需要重复该步骤几次,它肯定应该被提取到函数中)并将巨大的代码块划分为许多较小的块 - 您需要决定您的
mainFunc足够大了 -
这是一个相当广泛的问题。在大多数情况下,这取决于您的需求... Python 是 OOP 语言,因此也有类。很多时候我有类
class MyApp()和方法,然后是run方法,它调用类的方法。然后我将其用作MyApp().run().. 但它只是众多概念之一.. -
您还应该考虑到其他人(这也是您在不查看代码后的 3 个月内)可能必须阅读和维护您的代码。通过这种方式,可以更轻松地传达每个部分对文档字符串和函数所做的事情,这些文档字符串和函数以可预测的格式接受输入,做容易识别的事情,并以设定的格式给出输出。如果你有一个“无所不能”的巨大功能,那么它就会丢失。
-
@roganjosh 优点。我开始使用 sn-p 方法实现这一点,并且不断迷失 myself。我只能想象别人对我的代码进行故障排除。
-
没错。当您第一次开始构建项目时,它也是一个不错的路线图。分解任务的组件(“读取文件”、“处理数据”、“在 UI 上显示”)并为每个任务创建占位符函数/类,只需
pass。然后,您可以开始一个一个地填充这些函数,并验证每个组件是否按预期运行(或处理异常),然后再继续下一部分。
标签: python coding-style modularity