这取决于许多因素,但最重要的是您是否有权修改它。
如果你这样做,重构它。例如,重命名类/函数/变量。提取和概括功能。请参阅重构:Improving the Design of Existing Code(主题的圣经)。
在开始执行此操作之前,请确保代码处于正确的版本控制 (VC) 中并拥有一组良好的测试用例。 VC 让您回滚,测试用例有助于捕捉意外的副作用。
我建议像 Mercurial/Bazaar 和 Git 这样的分布式版本控制,因为它非常重构,不像添加功能那样完全结构化。
如果没有测试(常见),您必须创建它们。阅读Working Effectively With Legacy Code。特别是关于“密封点”(不是暹罗猫:p)。
如果您不创建更清洁的包装 API。
例如:
Old code ====================
const ACT_SHOW = 'show';
const ACT_HIDE = 'hide';
function int DoThing(Object $Obj, Stirng $Action, Object $Param1, Object $Param1) {
....;
}
Added code ==================
enum Actions {
show, hide;
};
class ActionDoer {
private obj;
ActionDoer($Object) {
this.obj = $Object;
}
function int act(Actions $Action, $Param1, $Param1) {
this.act($Action.toString(), $Param1, $Param1) ;
}
function int act(String $Action, $Param1, $Param1) {
DoThing(this.obj, $Action, $Param1, $Param1) ;
}
function int show() {
this.act(Actions.show, null, null);
}
function int hide(Color $ToBGColor, long $FadeTime) {
this.act(Actions.hide, $ToBGColor, $FadeTime);
}
}
这样,旧代码不会被触及,并且可以使用新代码完成扩展。这种方法的一个很好的例子是 jQuery,旧的(默认)访问 DOM 的方法很痛苦。
希望这会有所帮助。