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

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

阅读更多

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

相关推荐

    软件开发报价(含软件开发项目工作量及报价模板)的计算方法

    软件开发报价计算方法 软件开发报价是软件企业在与客户签订合同前计算的重要步骤。软件开发报价的计算方法是软件企业获取客户订单的关键步骤。软件开发报价计算方法的准确性直接影响着软件企业的利润和客户满意度。...

    软件开发的201个原则v1.3.pdf

    - **实践建议**:采用敏捷开发方法论,持续集成与持续部署(CI/CD)等现代软件开发技术,既能提高效率又能保证质量。 ##### 4. **高质量软件是可以实现的** - **核心思想**:鼓励开发者相信并追求高质量的目标。 - *...

    软件开发文档说明(完整流程)

    软件开发文档是软件开发过程中的核心组成部分,它们不仅记录了软件开发的各个阶段,还确保了团队间的沟通清晰,降低了项目风险。以下是关于软件开发文档的详细解释: 首先,软件开发设计文档包括以下几类: 1. ...

    软件开发质量管理体系

    《软件开发质量管理体系详解》 在信息技术领域,软件开发质量管理体系是确保软件产品和服务达到预设标准的关键要素。它涵盖了项目管理、需求分析、设计、编码、测试、维护等各个阶段,旨在通过系统化的方法来优化...

    软件开发常用文档(16个文档)

    在软件开发过程中,文档起着至关重要的作用,它们是团队沟通、项目管理、质量保证以及后期维护的基础。以下是一些关键的软件开发文档及其详细解释: 1. **项目开发计划**:这是项目启动阶段的关键文档,它定义了...

    软件开发详细设计模板

    该部分应包括软件开发项目中使用的所有术语和缩略语,以便读者更好地理解软件开发项目的内容。 参考文档部分是软件开发详细设计模板的重要组成部分,旨在为读者提供软件开发项目中所需的参考文档。该部分应包括软件...

    软件开发和服务项目价格构成及评估方法 实例

    "软件开发和服务项目价格构成及评估方法 实例" 软件开发和服务项目价格构成及评估方法是一种估算方法,不是物价部门的定价,仅为软件开发价格、软件(系统)维护收费价格、系统集成价格提供估算方法和依据,且不对...

    软件开发详细设计文档模板

    软件开发详细设计文档模板 软件开发详细设计文档模板是软件开发过程中的一份重要文档,是软件开发的关键文档之一。该文档的主要目的是对软件系统的详细设计进行描述和说明,以便于开发团队和项目相关人员对软件系统...

    软件开发委托(个人)协议

    6. **知识产权**:明确软件的知识产权归属,通常软件所有权归委托方所有,而开发方可能保留部分非商业用途的使用权。 7. **保密条款**:要求双方保守商业秘密,不泄露项目相关的信息和技术细节,防止机密信息外泄。...

    软件开发管理制度

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

    敏捷软件开发:原则、模式与实践(全).pdf

    读者可以从中学习到Martin的实用技术和流程,理解如何应用敏捷开发解决复杂问题,以及如何在实际开发中使用设计模式和极限编程来提升软件的质量和开发效率。 综上所述,敏捷软件开发作为一种以快速响应变化、持续...

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

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

    软件开发进度表模板

    描述软件开发进度每个阶段的主要工作,开始时间,结束时间等

    敏捷软件开发原则,模式与实践(中文)

    敏捷软件开发原则,模式与实践 在这本书中,享誉全球的软件开发专家和软件工程大师Robert C.Martin将向您展示如何解决软件开发人员、项目经理及软件项目领导们所面临的最棘手的问题。这本综合性、实用性的敏捷...

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

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

    软件开发合同的标准样本

    **知识点详解:软件开发合同的关键要素** 在软件开发领域,合同是确保项目顺利进行和双方权益得到保护的重要法律文书。从“软件开发合同的标准样本”这一主题出发,我们可以深入探讨软件开发合同中的关键要素,包括...

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

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

    图标素材, 软件开发界面图标

    在软件开发过程中,图标设计是至关重要的一个环节。图标不仅为用户提供直观的视觉标识,还能在用户界面中起到导航和信息传递的作用。"图标素材, 软件开发界面图标"这一主题涉及到的是用于构建软件界面的各种图标资源...

Global site tag (gtag.js) - Google Analytics