为了账号安全,请及时绑定邮箱和手机立即绑定

几个功能模块公用了部分代码,想修改其中一个功能,如何避免破坏其他功能

几个功能模块公用了部分代码,想修改其中一个功能,如何避免破坏其他功能

泛舟湖上清波郎朗 2019-03-01 11:07:41
几个功能模块有部分代码是公用的,想修改其中一个功能,需要修改公用代码,在不确定哪些功能引用了这段代码的情况下,如何避免破坏其他功能
查看完整描述

13 回答

?
拉丁的传说

TA贡献1789条经验 获得超8个赞

抽象出来
然后再写多个方法来实现抽象的方法,不同的功能点实现不同的业务逻辑。

查看完整回答
反对 回复 2019-03-01
?
三国纷争

TA贡献1804条经验 获得超7个赞

最简单的方法。复制出来单独引用。

查看完整回答
反对 回复 2019-03-01
?
开心每一天1111

TA贡献1836条经验 获得超13个赞

比如说你要修改公共模块的A方法,这个时候还有其他模块也是用的A,你可以不修改A而是另外写一个A1方法。

查看完整回答
反对 回复 2019-03-01
?
冉冉说

TA贡献1877条经验 获得超1个赞

可以将子类的代码把公共部分覆盖掉,你就可以任意修改其中一个的功能了

查看完整回答
反对 回复 2019-03-01
?
慕的地8271018

TA贡献1796条经验 获得超4个赞

创建一个分类 在分类中重写这个方法 在这个文件中导入这个分类。

查看完整回答
反对 回复 2019-03-01
?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

写个子类继承这个公共方法的类,需要修改的地方封装到子类里,目标模块用这个子类。

查看完整回答
反对 回复 2019-03-01
?
ITMISS

TA贡献1871条经验 获得超8个赞

创建一个新的方法。包装别人的方法。

function pre() {}

function now() {
    var result = pre()
    // todo sth
    // todo sth
    return newResult
}
查看完整回答
反对 回复 2019-03-01
?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

如果你的修改改变了原有代码的行为的话,最好还是创建一个新的
如果新的代码和原有代码有很多重复的话,可以考虑把可复用的地方提取出来

查看完整回答
反对 回复 2019-03-01
?
森林海

TA贡献2011条经验 获得超2个赞

两种方式:

  1. 为方法添加 flag 类型的参数,在方法中依据不同的 flag 做不同的处理

  2. 重新写多一个方法

查看完整回答
反对 回复 2019-03-01
?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

用分类的方式来修改那个方法吧

查看完整回答
反对 回复 2019-03-01
?
开满天机

TA贡献1786条经验 获得超13个赞

函数入口加个标识判断,标识为true走你自己写的逻辑,不然就走原来的不动。例子如下:

default()原来的,newFunc()新的,main()公共调用部分

main()
{
  if ($flag) {
        NewFunc();
  }
  else
        Default();
}

或者直接修改default()
default($flag){
  if ($flag) {
        你改的逻辑
  }
  else
        原来的
}
}

这是最简单的改法。。。

查看完整回答
反对 回复 2019-03-01
?
慕容708150

TA贡献1831条经验 获得超4个赞

既然这样,那这个方法就不是公用的了
所以,改这方法,根据实际情况,
加参数,通过参数判断
重新区分业务逻辑,拆分原方法,重新组合

查看完整回答
反对 回复 2019-03-01
?
狐的传说

TA贡献1804条经验 获得超3个赞

把“公共代码”写成“公共类”,然后组织结构换成“中介者”模式,降低“公共类”与其他类之间的耦合性,需要改动的地方继承“公共类”,修改要修改的部分

查看完整回答
反对 回复 2019-03-01
  • 13 回答
  • 0 关注
  • 649 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信