文章目录

关于代码复用的一些整理总结,很简单,但是平常不会细想吧。

代码复用是有两个方向的,
一种是对相对下层的具体的操作的复用,从实现出发,例如各种语言的工具类库、GUI编程中的界面组件等等;另一种则是对上层抽象的操作逻辑的复用,从需求出发,面向抽象(接口)编程、设计模式、框架,例如MVC分层架构思想、各种用来写Web应用的框架等等。

相对来说下层复用更容易,上层复用只在特定的操作逻辑不变的情形下比较可行,比如Web框架,容易抽象出完整的流程(即需要实现的操作逻辑);或者是代码组织层面上的设计模式、软件架构经验;而在要按照“具体需求”来设计操作逻辑的情形下相对难实现,因为很难合适的界定“具体需求”中操作逻辑不变部分的层次。

一些启发意义:
造“框架轮子”(尤其是对应某个具体需求的)得靠“重构”从实际应用中抽离出来(除非对具体需求十分熟悉和明确),当然初始阶段一些基础的框架和架构设计肯定是要的;而设计或者抽取工具类库的方法时要符合单一功能性,不要妄图包含上层的需求处理的逻辑。
更广义的,任何软件都可以从这两个方向来看待,提供基础功能的软件和提供抽象流程的软件(也有两者合一的,因为平常没有这个概念所以都是模糊的)。例如多媒体播放器、图片浏览器、压缩工具、Photoshop、数据库软件、编辑器等等就算第一种,而博客、论坛、微博、GTD或者清单管理软件、记账软件、IDE等等大致就算是第二种类型了。当然,这种软件分类只是泛泛之谈,切莫较真吧(^_^)

文章目录