[贡献式编程]是一个编程的思考方法,因为这种思考方法没有一个很有系统的归纳,程序员一般通过很多年实际工作中的磨练方可体会,故此我在这里做一下归纳。
这并不是什么新的概念,把它归纳成一种思考方式,可以促进程序员对模块的思维、理清系统架构和提高代码质量。
下面没有太多严谨的格式,比较随意,敬请见谅。
所谓贡献
贡献泛指代码的添加(不是代码的修改)。
针对贡献,可以有以下场景:
- 添加一个JAR包到项目
- 添加一个对象到项目
我们都知道面向对象的原则SOLID,其中的Open-Close Principle,意思是扩展功能是通过添加代码,而不是修改代码。[贡献]就是针对这个部分做实在的讨论。
任何贡献都会对系统有一定的影响,这些影响可以是UI上的,可以是处理逻辑上的。如果一个贡献没有对系统做成任何影响,相信这个贡献可以被去掉而令系统变得精简一点。
例子
假如我们要做个订单处理系统,假设订单数据是从某个平台下载回来的(如Amazon),这个系统有个UI可以显示每一个订单。
第一版
我们可能会有以下结构:
- 一个类叫 OrderDownloader ,负责调用某平台上的API,把数据插入到数据库。
- 一个定时器,定时调用 OrderDownloader
- 在UI上,直接显示订单列表、点击进入订单明细。
搞定!
当系统需要扩展的时候,不同的程序员在实际编程上会出现不同的结果,当然不同的结果可能是因为商业决定(如时间不容许)而导致的,这里讨论的是如何从根本思考上的改变,导致一种比较优秀的架构。
接下来会继续用这个例子,讨论如果使用贡献式编程,继续为系统做出贡献。