给出以下代码:
status = row[COL_STATUS]
if status == "idle":
row[COL_EDITABLE] = True
row[COL_FONTSTYLE] = pango.STYLE_NORMAL
row[COL_WEIGHT] = pango.WEIGHT_NORMAL
elif status == "DCed":
row[COL_EDITABLE] = True
row[COL_FONTSTYLE] = pango.STYLE_ITALIC
row[COL_WEIGHT] = pango.WEIGHT_NORMAL
else:
row[COL_EDITABLE] = False
row[COL_FONTSTYLE] = pango.STYLE_NORMAL
row[COL_WEIGHT] = pango.WEIGHT_BOLD
在您看来,以下是否会成为净有益重构?
d = {"idle": (True, pango.STYLE_NORMAL, pango.WEIGHT_NORMAL),
"DCed": (True, pango.STYLE_ITALIC, pango.WEIGHT_NORMAL),
None: (False, pango.STYLE_NORMAL, pango.WEIGHT_BOLD)}
e,f,w = d.get(status, d[None])
row[COL_EDITABLE] = e
row[COL_FONTSTYLE] = f
row[COL_WEIGHT] = w
如果要编辑更多案例或更多行组件会怎样?
答案 0 :(得分:4)
如何使用对象并执行类似于“使用子类替换类型代码”的操作? http://www.refactoring.com/catalog/replaceTypeCodeWithSubclasses.html
答案 1 :(得分:3)
您在简洁性方面获得的内容在可读性方面有所损失。在当前的例子中,我可以很容易地分辨出去哪里。在新的代码中,我必须更加努力。
乘以下一千次编辑,你的手上会出现一些严重的可维护性问题。