关于代码重用

jinhuaxing 2004-04-07 08:33:15
代码重用真是程序员的一个终极理想(不过当世界上所有需要的代码都写出来的时候,还要程序员干什么呢?),但是很多人都理解错了代码重用的含义,代码重用不是毫无理由的用原有的可以工作的老代码(虽然用起来不一定舒服),而是在做设计的时候,要考虑到代码的可扩充性、可理解性、可维护性。同样,在重用老代码的时候也要评估原来代码的质量,如果原来代码不能满足或者不能很好的满足现在的目标,那么要么进行代码的重构,要不重新写一套。尤其是第一版的程序,架构很难做到一劳永逸,第二版就应该无情的抛弃第一版的代码。
如果第一版的代码已经作为API导出了怎么办?导出意味着别人已经在使用你的代码了,那 么轻易的改接口也是不负责任的。解决的办法很简单,维护两套接口,改写老的代码,使 之调用新的代码,并标记老的API为deprecated。举个例子:
version 1:
public class A {
public int f() { ... }
}
public class C {
public void f(A a);
}

version 2:
public class B {
public int f() { ... }
}

/**
* @deprecated use B
*/
public class A {
B b = new B();
/**
* @deprecated use B.f()
*/
public int f() {
//delegate to B.f()
return b.f();
}
}

public class C {
/**
* @deprecated use C.f(B b)
*/
public void f(A a) { ... }

public void f(B b) { ... }
}

代码不是什么好东西,别把它当作宝贝,也不是你的孩子(有人就这么说),该抛弃时不要惋惜,里面的设计思想才是精华所在。

--
今天在公司上班,接手一个项目。我想重新设计原来的一部分class。原来的东西本来就很少,也是在很匆忙的情况下设计出来的,有很多不完善的地方。项目负责人却一定要我用原来的代码,感觉很是不爽,故有感而发 :-)

...全文
111 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
blueddky7752001 2004-04-09
  • 打赏
  • 举报
回复
我觉得可能是公司认为利用"代码重用"也是一种能力,我们必须要习惯->精通
age0 2004-04-09
  • 打赏
  • 举报
回复
“代码重用”这个名词早就给用滥了,变得几乎一文不值。
对我而言只有一行代码都不用改的重用才叫真正的代码重用,只要改了一行代码就没资格称为重用,最多只能算重构而已。
Chuanyan 2004-04-08
  • 打赏
  • 举报
回复
不爽的话,就重构咯。
再说,代码重用不是我终极理想啊,就算是面向对象,它的主要目的也是为了设计更复杂的系统,而不是方便代码重用。
jinhuaxing 2004-04-08
  • 打赏
  • 举报
回复
为什么要把成本考虑的比什么都重要的,要知道你的成本也可能只是一时的成本。软件工程已经告诉过你多少次了,“维护费用占了整个工程费用的大部分”。而且这样不好的代码一直留在系统中对现在和将来的开发人员有很不利,看到这些不好的代码心里就不愉快,导致士气下降,看不到希望,软件不是越做越好,而是越做越差。
ferrerocao 2004-04-07
  • 打赏
  • 举报
回复
其实这些都是很正常的现象,公司可能是出于成本方面的考虑。
thundersoft 2004-04-07
  • 打赏
  • 举报
回复
呵呵,支持一下

1,268

社区成员

发帖
与我相关
我的任务
社区描述
软件工程/管理 管理版
社区管理员
  • 研发管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧