好的重构还是坏的?

时间:2010-10-28 19:25:26

标签: python coding-style refactoring

给出以下代码:

    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

如果要编辑更多案例或更多行组件会怎样?

2 个答案:

答案 0 :(得分:4)

如何使用对象并执行类似于“使用子类替换类型代码”的操作? http://www.refactoring.com/catalog/replaceTypeCodeWithSubclasses.html

答案 1 :(得分:3)

您在简洁性方面获得的内容在可读性方面有所损失。在当前的例子中,我可以很容易地分辨出去哪里。在新的代码中,我必须更加努力。

乘以下一千次编辑,你的手上会出现一些严重的可维护性问题。