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

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

阅读更多

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  
这时写给我的同事的一篇文章,其中提到的软件开发平台也是公司内部使用的平台,不知所云的网友们请多多包涵。

相关推荐

    敏捷软件开发.pdf

    敏捷软件开发是一种以人为核心、迭代、循序渐进的软件开发方法。它强调快速和灵活地响应变化,以适应不断变化的需求。敏捷方法反对繁重的文档和过度的预设计,提倡可适应性、可持续性和持续的客户合作。 书中,...

    软件开发-项目投标书

    软件开发项目投标书的技术部分知识点 软件开发项目投标书是软件开发项目的核心文件之一,它详细描述了项目的技术要求、设计原则、系统建设目标、项目施工计划、质量控制措施等方面的内容。下面是软件开发项目投标书...

    软件开发流程图的国家标准

    《软件开发流程图的国家标准——基于GB1526-89的解析》 在软件开发领域,规范化的流程图是确保项目顺利进行的关键工具之一。中国的国家标准GB1526-89,即《图形符号流程图》,为设计和绘制流程图提供了明确的指导...

    软件开发绩效考核表

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

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

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

    软件开发管理制度

    ### 软件开发管理制度详解 #### 一、概述 软件开发管理制度是企业为了规范软件开发过程中的各项活动而制定的一系列规定与流程。本文档旨在深入解析ChinaAdvancedConstructionMaterialsGroup公司的软件开发管理制度...

    软件开发常用图标大全

    在软件开发过程中,图标起着至关重要的作用。它们不仅能够美化界面,还能够直观地向用户传达各种功能和状态信息。"软件开发常用图标大全"集合了大量的图标资源,旨在为开发者提供一个便捷的一站式解决方案,减少寻找...

    软件开发方案书

    1. 软件架构:采用 B/S 模式的基于网络的 Web 应用程序架构,服务器采用稳定、高效的 LINUX 操作系统作为平台,使用 mysql 作为后台数据库,使用 JAVA 语言描述网站业务逻辑,辅以 JSP 语言进行页面展示。...

    软件开发报价单模板

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

    软件开发过程文档

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

    完整的全套 软件开发文档模板

    在软件开发过程中,一套完整的文档模板是至关重要的,它涵盖了项目的各个阶段,从需求分析到系统测试,确保团队之间的沟通顺畅,项目管理有序。本文将详细介绍这套“完整的全套软件开发文档模板”所包含的关键知识点...

    软件开发图标(经典收藏)

    在软件开发过程中,图标起着至关重要的作用。它们不仅提升了用户界面的美观度,更是功能和操作的视觉指示,帮助用户快速识别和理解软件的功能。本资源“软件开发图标(经典收藏)”包含了一个丰富的图标集合,总计...

    软件开发文档模板(全套)

    2、项目开发计划 3、需求规格说明书 4、概要设计说明书 5、详细设计说明书 6、用户操作手册 7、测试计划 8、测试分析报告 9、开发进度月报 10、项目开发总结报告 11、程序维护手册 12、软件问题报告 13、...

    给java软件开发工程师的简历模板

    【标题】:“给Java软件开发工程师的简历模板” 【描述】:“这是一份适用于软件开发工程师,特别是Java领域的简历模板,简洁而不失专业。” 【标签】:“Java开发工程师,简历模板,软件工程师” 【部分内容】:...

    技术部软件开发KPI考核文档

    适合技术部的KPI考核,软件开发、java技术的考核,适合各开发部

    软件开发计划-Project模板

    好资源!适用于Microsoft project(项目管理软件)的软件开发计划,涵盖了当前所有软件开发的详细过程。用这个管理开发进度可达到事半功倍的效果。

    软件开发图标背景素材

    在软件开发过程中,图标设计和背景素材起着至关重要的作用。图标是用户界面的重要组成部分,它们不仅美化了应用,还提供了功能性的指引,使用户能够快速理解和操作软件。背景素材则为应用程序或网站增添了视觉吸引力...

    软件开发文档模板[全套]

    在软件开发过程中,一套完整的文档是确保项目顺利进行的关键因素。"软件开发文档模板[全套]"包含了一系列重要的文档,它们涵盖了项目的各个阶段,从需求分析到系统维护,为项目管理提供了全面的指导和支持。以下是对...

    软件开发文档大全

    在软件开发过程中,文档起着至关重要的作用,它不仅是团队沟通的桥梁,也是项目管理和质量保证的...通过使用"软件开发文档大全"中的模板,开发者可以快速、准确地创建符合规范的文档,提升整个项目的组织和执行效率。

Global site tag (gtag.js) - Google Analytics