“小步快跑”的编程方法,是一种高效的编程方法,它摒弃了那种“完备的设计→完备的编码→完备的测试”这种近乎于瀑布式的开发模式。“小步快跑”的编程步骤通常是这样:
- 忽略掉所有的细节与分支,用最简单快捷的方式完成主流程的编写,让程序快速跑起来;
- 以重构的方式不断往程序中添加新的功能,每次添加新的功能都应当足够短小而可以快速实现,从而通过测试快速检验新增的功能;
- 不断往复步骤2,直到完成开发。
为了说明这种编程方法,让我们用实际工作中的一个案例来进行讲解吧:
为了让案例尽量贴近工作,又不给大家带来业务知识的障碍,我们来看看一个数据推送程序的实现过程。该程序的需求就是将一个数据库中的数据推送给另一个数据库,一方面应当能够高效处理大量数据,让推送方与接收方有效解耦,另一方面应当能够实现字符集转换、运行过程的监控以及方便快捷地定义新的推送接口。当你接到这样一个需求的时候,你是怎样去分析和设计的呢?
显然,这个简单功能所要达到的预期目标很多:高效处理大量数据、让推送方与接收方有效解耦、实现字符集转换……要一一实现确实需要很多的设计。但采用“小步快跑”的方式,起初你并不需要想那么多。首先从宏观上制定出技术方案,即先采用一个高效的方式导出数据文件,再用一个高效的方式导入到目标数据库。制定出这样一个技术方案以后,我们就可以动手编程了。
动手编程时,不要想那么多,首先编写一个简单的导出程序,SQL是固定的,参数也写死。就一个目标:能跑通,第一个版本就形成了。
在此基础上开始我们“小步快跑”的重构之旅了(注意:每完成一步都要测试与验证):
- 编写一个模板,让SQL是可变的,参数也可以配置;
- 在模板的基础上,让SQL与参数都配置在元数据表里,通过配置这些表就可以快速地定义一个一个的数据推送接口;
- 开始编写导入程序,在编写时发现可以大量复用导出程序的代码,故而重构导入程序,将公共部分抽取接口或工具类,从而实现代码复用;
- 完成简单的导入程序并跑通后开始改写,通过模板与元数据实现推送接口的可配置;
- 实现各个过程的日志编写,以及目标数据库的对账校验功能;
- 实现各个过程的异常处理,以及系统级的异常信息采集;
- 完善各个部分的代码命名与注释;
- 重新思考与调整各个功能的分层与解耦。