0

我将 codeclimate 传递给我的代码,并获得了以下信息:

在其他 1 个位置找到类似代码

这是我的代码:

stradd = 'iterable_item_added'
if stradd in ddiff:
    added = ddiff[stradd]
    npos_added = parseRoots(added)
    dics_added = makeAddDicts(localTable, pk, npos_added)
else:
    dics_added = []
strchanged = 'values_changed'
if strchanged in ddiff:
    updated = ddiff[strchanged]
    npos_updated = parseRoots(updated)
    dics_updated = makeUpdatedDicts(localTable, pk, npos_updated)
else:
    dics_updated = []

在哪里iterable_item_added重复values_changed。如何改变它?

4

1 回答 1

1

只需抽象参数并创建一个辅助方法:

def testmethod(name,localTable,m,ddiff,pk):
    if name in ddiff:
        npos = parseRoots(ddiff[name])
        rval = m(localTable, pk, npos)
    else:
        rval = []

    return rval

调用它:

dics_added = testmethod('iterable_item_added',localTable,makeAddDicts,ddiff,pk)
dics_updated = testmethod('values_changed',localTable,makeUpdatedDicts,ddiff,pk)

注意:分解代码时要小心,您可能会引入错误(并使代码更具可读性:))。

另外:该辅助方法强制传递大量局部变量。也许创建一个对象和成员变量会更加简化。

在这种情况下,为了让您的审查工具闭嘴,这样做似乎有点“矫枉过正”。

于 2016-09-21T19:49:38.937 回答