重构函数内的代码重复
Refactoring code duplication inside function
我想重构 assign_hotkey
函数,因为我不喜欢 if 语句中的重复代码。
代码:
n_path_i = 0
c_node_i = 1
h_key_i = 2
hotkeys = [
['Filter/Blur', 'Blur, size 20 label "hello world"', 'A'],
['Draw/LightWrap', 'LightWrap', 'B'],
['Draw/Grain', 'Grain2', 'X']
]
def assign_hotkey(n_path, c_node, h_key):
c_node_splitted = c_node.split(',')
if len(c_node_splitted) > 1:
menu.addCommand(n_path,
lambda: nuke.createNode(*c_node_splitted),
h_key)
else:
menu.addCommand(n_path,
lambda: nuke.createNode(c_node),
h_key)
for i in hotkeys:
assign_hotkey(i[n_path_i], i[c_node_i], i[h_key_i])
因为当你将它传递给 nuke.createNode
时,你正在解压缩你从拆分 c_node
得到的列表,所以没有理由对列表的长度为 1 做一个特殊的情况.
您可以更改:
if len(c_node_splitted) > 1:
menu.addCommand(n_path,
lambda: nuke.createNode(*c_node_splitted),
h_key)
else:
menu.addCommand(n_path,
lambda: nuke.createNode(c_node),
h_key)
至:
menu.addCommand(n_path,
lambda: nuke.createNode(*c_node_splitted),
h_key)
我想重构 assign_hotkey
函数,因为我不喜欢 if 语句中的重复代码。
代码:
n_path_i = 0
c_node_i = 1
h_key_i = 2
hotkeys = [
['Filter/Blur', 'Blur, size 20 label "hello world"', 'A'],
['Draw/LightWrap', 'LightWrap', 'B'],
['Draw/Grain', 'Grain2', 'X']
]
def assign_hotkey(n_path, c_node, h_key):
c_node_splitted = c_node.split(',')
if len(c_node_splitted) > 1:
menu.addCommand(n_path,
lambda: nuke.createNode(*c_node_splitted),
h_key)
else:
menu.addCommand(n_path,
lambda: nuke.createNode(c_node),
h_key)
for i in hotkeys:
assign_hotkey(i[n_path_i], i[c_node_i], i[h_key_i])
因为当你将它传递给 nuke.createNode
时,你正在解压缩你从拆分 c_node
得到的列表,所以没有理由对列表的长度为 1 做一个特殊的情况.
您可以更改:
if len(c_node_splitted) > 1:
menu.addCommand(n_path,
lambda: nuke.createNode(*c_node_splitted),
h_key)
else:
menu.addCommand(n_path,
lambda: nuke.createNode(c_node),
h_key)
至:
menu.addCommand(n_path,
lambda: nuke.createNode(*c_node_splitted),
h_key)