【问题标题】:Python modularity best practicesPython 模块化最佳实践
【发布时间】: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


【解决方案1】:

如果每个步骤本身都有意义,那么制作函数可能会更好。通过这种方式,您可以记录每个函数的作用,并且也更容易隔离错误。总之,我相信使用函数可以让代码更容易维护。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    • 2016-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多