我想将一个大的Python函数重构为较小的函数.例如,请考虑以下代码段:
x = x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9
Run Code Online (Sandbox Code Playgroud)
当然,这是一个微不足道的例子.在实践中,代码更复杂.我的观点是它包含许多必须传递给提取函数的局部范围变量,它们可能如下所示:
def mysum(x1, x2, x3, x4, x5, x6, x7, x8, x9):
x = x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9
return x
Run Code Online (Sandbox Code Playgroud)
问题是pylint会触发有关太多参数的警告.做以下事情可以避免警告:
def mysum(d):
x1 = d['x1']
x2 = d['x2']
...
x9 = d['x9']
x = x1 + x2 + x3 + x4 + x5 + x6 + x7 …Run Code Online (Sandbox Code Playgroud) 我正在挖掘一个庞大的遗留Python类,它有很多方法.我最终将复杂的碎片分成更小的碎片,因此方法的数量会增加更多.我想知道是否有一个工具可以扫描Python代码并为其方法构建某种依赖关系图.
如果至少调用一次,我将方法定义为方法x()的依赖项.y()x()y()
我可以使用这样的工具来隔离(如果可能的话)没有外部依赖关系的类方法的子集(它们的所有依赖关系都是来自同一子集的方法).
我打算将一些功能转移到其他类中,我认为这种方法可以帮助我决定从最初的庞大类中提取哪些部分.
编辑:我真的很喜欢命令行工具.
我知道unittestPython模块.
我知道课堂的assertRaises()方法TestCase.
我想编写一个在未引发异常时成功的测试.
有什么提示吗?
我的问题与这个问题有关:Python工具,它为类的方法构建依赖关系图.
在找不到任何工具之后我自己写了一个快速黑客:我已经使用了编译器模块,我已经将源代码解析为抽象源代码树,并且我已经走了它来收集类方法之间的依赖关系.我的脚本生成了graphviz的输入文件,用于生成看起来像这样的依赖图.
此时我已经陷入困境.我意识到我不知道如何重构这个类以减少它的复杂性.我根本不知道我应该追求什么.例如,在关系数据库的理论中,有一些简单的规则用于将数据库带到正常形式.关于良好类设计的一些类似理论(就其方法之间的依赖关系而言)怎么样?这个主题是否涵盖在某处,以便我可以研究它?
我正在学习如何使用mechanize,一个Python模块来自动化与网站的交互.
一个功能是自动处理cookie.我想从mechanize.Browser实例中转储cookie以进行调试,但我似乎无法自己解决这个问题.
我很难尝试用许多分支重构一些代码片段.有许多if/then/else块,其中一些是嵌套的.
是否有任何技巧可用于重构代码而不浪费大量时间试图首先理解功能的每个次要方面?
现在我基本上使用布尔代数(De Morgan定律).我正在尝试修改if语句中的条件,因此我可以在if/then/else块之外弹出小代码片段.这有点帮助,但代码仍然是分支的.我知道,在某些时候我最终还是要打破BIGGIES成更小的类的方法,但由于代码包含许多其他类方法的调用,并有很多本地范围变量的这是复杂的,所以我将不得不应对传球新方法的许多论据.我想知道在开始将它分成不同的小块(类方法)之前,我是否可以使用其他一些技巧来提高代码质量.
我知道带有向上和向下箭头的 bash 历史导航。
我想要一种懒惰的方式来选择与某些正则表达式匹配的前一个命令(比整个命令短,因此输入的时间更少)。
bash可以吗?
如果没有,其他shell有没有这样的功能?
python ×6
refactoring ×4
bash ×1
cookies ×1
exception ×1
oop ×1
pylint ×1
shell ×1
unit-testing ×1