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

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>

  

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

极致管理软件开发平台基于Microsoft .Net开发技术和模型驱动的技术架构,是面向业务应用的管理软件开发平台。极致管理软件开发平台提供数据实体定义工具、界面设计工具、系统发布工具和运行时框架组件,帮助软件开发人员突破技术瓶颈,实现少写代码或不写代码、快速地开发应用软件的目的。 极致管理软件开发平台基于模型驱动的技术架构,不仅能够快速地开发应用软件,而且开发的软件系统具有高度的扩展性和可维护性,能够根据的用户需求快速地对软件系统进行调整,降低了软件实施和维护过程中的成本和风险,使软件系统能够充分满足用户的个性化需求,以及用户不断发展和完善信息系统的长期目标。 极致管理软件开发平台体现了极致公司充分把握目前管理软件平台化开发的新趋势,融合了极致公司在管理软件领域的行业经验和主流的开发技术,能够帮助软件企业实现“快速开发、随需而变”的目标,从而帮助软件企业在激烈的市场竞争中赢得先机并获得前所未有的高回报。 极致管理软件开发平台的基本思想 一、模型驱动的技术架构 极致管理软件开发平台基于模型驱动的技术架构,通过元数据来保存数据实体、用户界面和业务流程的模型。应用软件系统通过运行时框架根据元数据描述的模型来访问数据、加载用户界面并驱动业务流程。 以模型驱动的方式,而不是编程的方式,使软件系统更加易于理解,并且有更好的扩展性和可维护性。 数据实体元数据 使用极致数据实体定义工具进行数据实体定义时,一方面对数据实体的定义进行了描述,另一方面建立了数据实体之间的关系,这两方面的数据都作为元数据保存到数据库中。极致管理软件开发平台通过OR Mapping(对象-关系映射)的方式封装了对数据库的访问,以对象的方式来访问数据库中的数据,避免了通过写SQL语句来创建或维护数据表,或通过写SQL语句实现对数据的新增、修改、删除和查询的传统编程方式。 元数据的建立和OR Mapping的数据访问方式实现了面向对象的数据访问方式,能够简化编程并实现对业务逻辑的扩展,同时还为实现多数据库的支持建立了良好基础。极致管理软件开发平台简化了以数据为中心的应用程序中与数据持久化相关的编程任务,使开发人员能够将开发重点专注于实现面向对象的业务模型和商业逻辑。 用户界面元数据 极致管理软件开发平台突破了传统的用户界面编程方式,通过定义界面元数据的方式,而不是编程方式来设计用户界面。极致界面设计工具能够根据数据实体的属性以及数据实体之间的关系快速地设计单据、序时薄、报表、菜单、工具栏等用户界面,同时支持通用表单的设计。通过极致界面设计工具设计的用户界面以界面元数据的方式保存在数据库中,运行时框架组件动态加载界面元数据并创建用户界面。通过元数据来描述用户界面的方式实现的界面的动态构造,使用户界面易于调整和维护。 业务流程元数据 极致管理软件开发平台集成工作流引擎,能够对业务流程进行建模。业务流程建模的结果以元数据的方式保存在数据库中,运行时由工作流引擎根据元数据的描述驱动业务流程。 二、成熟的软件基础结构 极致管理软件开发平台集成了诸多的管理软件基础结构,例如对于互联网直联的支持、对多种数据库的支持、集成的工作流引擎、短信平台和邮件系统等。 极致管理软件开发平台预置了大量的基本操作,例如单据的新增、修改、删除、复制、审核、套打等操作,报表的过滤、打印、预览、联查、导出、快速查找、图表分析等操作。 极致管理软件开发平台还提供了基于以上管理软件基础结构开发的诸多的标准组件,例如用户数据库管理、组织机构管理、用户管理、权限管理、文档管理、数据导入导出等,在通过极致管理软件开发平台开发软件系统能够直接使用。 通过使用极致管理软件开发平台提供的基础结构,在开发软件系统时能够极大地缩短软件的开发周期,降低软件开发成本
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值