Улучшение кода для найденного аналогичного кода

Я передал 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 повторяются Как это изменить?

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)

примечание: будьте осторожны при разложении кода, вы можете вносить ошибки (и делать код более читабельным:)).

Также: этот вспомогательный метод заставляет передавать много локальных переменных. Возможно, создание объекта и переменных-членов упростит еще больше.

В этом случае кажется, что это немного "излишне", чтобы заставить ваш инструмент обзора отключиться.

Другие вопросы по тегам