`
fangang
  • 浏览: 860422 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
311c4c32-b171-3767-b974-d26acf661fb2
谈谈用例模型的那些事儿
浏览量:37626
767c50c5-189c-3525-a93f-5884d146ee78
一次迭代式开发的研究
浏览量:67656
03a3e133-6080-3bc8-a960-9d915ed9eabc
我们应当怎样做需求分析
浏览量:405654
753f3c56-c831-3add-ba41-b3b70d6d913f
重构,是这样干的
浏览量:85424
社区版块
存档分类
最新评论

使用软件开发平台的一点儿建议(续)

阅读更多

2.   复用性

(上接)在软件开发过程中,其实很多要实现的功能都具有相同或者相似性。当你开发完一段代码后,你发现这段代码可以用到另一个程序中,这时复用就出现了。最简单的复用就是代码拷贝,将一段代码拷贝到另一个地方使用。代码拷贝应当是最低级别的复用,因为它可维护性差,当这段代码因为某种原因需要修改时,这种修改就变成了可怕的梦魇。将同样的代码在几十甚至上百处进行同样的修改。这样的修改也许我们大多数都遇到过,很烦,很累,也很讨厌,有人形容为“代码搬运”。如果写一个通用函数或者通用类让所有地方调用,问题就可以得到解决。这就是我们要考虑的代码复用性。

如果你在编写代码的时候考虑一下,这段代码是否可以被其它地方使用,或者考虑一下这个要编写的功能在其它地方是否编写过,随时有复用的意识,我们的编码水平就开始在提高了。在编写代码时,为了这段代码在其它地方使用,你可能就要想法编写得更加通用。在编写另一段代码时,突然发现某个功能已经在某段代码中实现过了,那么你可能就要考虑重构那段已经实现的代码,将通用的部分从那段代码中解藕出来(这就是前面提到的解藕的原因之一)。

比如,我在开发过程中发现了很多可以通用的功能,都把它们提出了写成了公用行数放到工具类或者写成公用类中,如获取当前期间、获取本位币、BigDecimal的四则运算、当前汇率的计算等。我要特别提到的是我开发条件查询的过程。

起初,我编写了一段某个报表的条件查询代码。很快,我发现这段代码可以在很多地方复用,因为几乎所有报表都需要条件查询。但是,编写一个通用的条件查询代码其实不太容易,因为不同的报表有不同的字段、不同的条件查询项以及不同的条件逻辑。还是像前面提到的分析方式,先总结出所有需求的共同点、不同点、扩展点,共同点保留,不同点提取出来做成扩展点,预见可能有那些扩展功能都罗列出来,最后重构了这段代码。现在,不管是什么报表,有什么字段或条件查询项,只要在条件查询页面添加了控件,并将控件的名称注册到我的条件查询类中,几乎不编写java代码就可以实现条件查询了(一些特殊判断逻辑的条件需要编写代码)。如果要增加新的条件查询项,只需要在条件查询页面中增加这个控件并且注册这个控件名,新增条件就完成了。

<plugin desp="查询" onEvent="filter" type="..plugin.CommonDynamicGridPlugin" attr="grid:grid;hasPage:true">
	...
	<plugin type="..plugin.CommonFilterPlugin">
		<value name="join">and</value>
		<value name="include">
AP_APVoucher.cVouTypeGUID;AP_APVoucher.cCurGUID;AP_APVoucher.cSupGUID;AP_APVoucher.cVouCodeLower;AP_APVoucher.cVouCodeUpper;AP_APVoucher.dVouDateLower;AP_APVoucher.dVouDateUpper;AP_APVoucher.iRedFlag;AP_APVoucher.iAuditStatus;iCheckStatus;GLVoucher;AP_APVoucher.iPayableAMT_FLower;AP_APVoucher.iPayableAMT_FUpper;AP_APVoucher.iPayableAMTLower;AP_APVoucher.iPayableAMTUpper
</value>
		<value name="AP_APVoucher.cFlag">AP</value>
		<plugin desp="生成“是否核销”过滤信息的plugin" type="..CheckStatusFilterPlugin"></plugin>
		<plugin desp="生成“是否制证”过滤信息的plugin" type="..GLVoucherFilterPlugin"></plugin>
	</plugin>
</plugin>

  

举这个例子我是想说明一个复用的过程。通常,一个复用的过程总是从具体到抽象的重构过程:起初都是一些具体的应用,然后从它们中间发现了共同的地方,进行抽象和提取,最后进行代码重构形成通用的东西。也许在你开发完成通用的代码之后,又发现了更加广阔的应用,又继续重构,不断升级。代码重构是需要一些功底的,需要理论进行支持,诸如设计模式等等。但在这里我强调的是意识,代码编写时的一种复用意识。有了这种意识,我们的代码才逐渐开始精妙起来。

分享到:
评论
2 楼 liuwenjie517333 2011-02-16  
赞一个,代码的复用到思想的复用,成长的体现!
1 楼 fangang 2008-11-06  
这时写给我的同事的一篇文章,其中提到的软件开发平台也是公司内部使用的平台,不知所云的网友们请多多包涵。

相关推荐

    手机软件开发平台、框架以及工具的介绍

    应用软件开发平台框架 应用软件开发平台接口 开发支持工具介绍 如何使用我们的平台

    软件开发合同模板范本(5 篇)

    软件开发合同模板范本(5 篇) 包括软件开发合同模板范本1,软件开发合同模板范本2,软件开发合同模板范本3,软件开发合同模板范本4,软件开发合同模板范本5

    软件开发质量管理体系

    软件开发质量管理体系

    软件开发流程图VISIO文档

    软件开发流程图VISIO文档,适合普遍的软件开发

    软件开发管理规范(制度)

    软件开发管理规范(制度),软件开发标准流程模板。。。

    软件开发类投标项目全套解决方案模板

    移动业务开发平台(APPCAN SDK) 53 1. 音频对象API 55 2. 电话对象API 55 3. 照相机对象API 55 4. 剪贴板对象API 55 5. 日期控件API 55 6. 联系人对象API 55 7. 数据库对象API 55 8. 设备信息对象API 55 ...

    软件开发管理制度

    软件开发管理制度,软件开发管理制度软件开发管理制度软件开发管理制度

    Head First软件开发.pdf

    《Head First软件开发(中文版)》内容包括:伟大的软件开发:让客户满意、收集需求:知道客户需要什么、项目规划:为成功而筹划、使用情节和任务:开始你实际的工作、足够好的设计:以良好的设计完成工作、构建你的...

    软件开发项目验收标准

    软件开发项目验收标准软件开发项目验收标准软件开发项目验收标准

    软件开发计划书(是 一个完整的项目开发文档)

    软件开发计划书 ..............1.任务申请.doc ..............2.可行性与计划阶段--可行性研究报告.doc ..............2.可行性与计划阶段--项目开发计划.doc ..............3.需求分析阶段--数据要求说明书...

    软件开发常用图标大全

    软件开发常用图标大全,很多图标开发过程中都能够使用到,方便,避免了找图标的麻烦

    软件开发的形式化方法

    《软件开发的形式化方法》对软件开发中的形式化方法进行了介绍和讨论,内容涵盖了SE2004中关于"软件的形式化方法"的知识点,主要包括:有限状态机、Statecharts、Petri网、通信顺序进程、通信系统演算、一阶逻辑、...

    (高清正版)GB∕T36964-2018软件工程软件开发成本度量规范.pdf

    2018年12月28日,国家市场监督管理总局、国家标准化管理委员会发布2018年第17号中国国家标准公告,批准《软件工程 软件开发成本度量规范》国家标准正式发布,标准号为GB/T 36964-2018。  2018年12月28日,国家...

    Head First软件开发

    Head First 软件开发 中文扫描版

    软件开发详细设计说明书(示例)

    软件开发详细设计说明书(示例)1、上传 用户通过关联系统将图片、电子保单、电子文档等上传至影像进行永久保留。 2、下载 用户通过IE浏览器调阅、Applet调阅、出单系统调阅等方式获取并查看保存在影像系统中的图片...

    软件开发绩效考核表

    软件开发绩效考核表 软件开发绩效考核表 软件开发绩效考核表

    软件开发过程文档

    包含所有软件开发的文档模板,具体如下: 测试用例编写规范.doc 概要设计说明书编写规范.doc 计算机源代码编写规范.doc 开发大纲.doc 配置管理规范.doc 配置管理计划编写规范.doc 软件测试计划...

    软件开发部KPI考核表.doc

    软件开发部KPI考核表.doc

    软件开发文档范例

     本手册详细描述软件的功能、性能和用户界面,使用户对如何使用该软件 得到具体的了解,为操作人员提供该软件各种运行情况的有关知识,特别是操作方法 的具体细节。  7.◇ 测试计划:  为做好集成测试和验收...

    软件开发报价单模板

    软件开发报价单模板。分为项目调研、需求分析、系统分析、系统结构设计、界面和报表设计、数据库设计等阶段

Global site tag (gtag.js) - Google Analytics