设为首页  
联系我们  
加入收藏  
网页制作 冲浪宝典 图形图像 操作系统 软件教学 编程开发 认证考试 安全技术 站长专区 文学驿站 娱乐天地 游戏天地 办公软件
文章搜索
您的位置: 首页 >> 文章首页 >> 编程开发 >> 其他开发语言 >> [ZT]代码地震(作者:王咏刚 2004 年1 月)
精品推荐
其他开发语言点击TOP10
·数字小键盘指法练习
·用C语言编通讯录程序(初学者级别的)
·Modem 常用AT指令集
·单片机模拟I2C总线及24C02(I2C EEPROM)读写实例(源代码)
·C++经典电子书下载
·Thinking in C++ 简体中文第二版
·debug和release的区别
·error LNK2001: unresolved external symbol __ftol2 错误解决
·C库函数手册
·一个简单的C语言编译器
编程开发点击TOP10
·数字小键盘指法练习
·ASP.NET 程序中常用的三十三种代码
·用C语言编通讯录程序(初学者级别的)
·我写的Java学生成绩管理系统源代码
·CHK文件恢复工具
·Modem 常用AT指令集
·java笔试题
·异常java.sql.SQLException: Io exception:The Network Adapter could not establish connection
·单片机模拟I2C总线及24C02(I2C EEPROM)读写实例(源代码)
·C++经典电子书下载
精选专题

[ZT]代码地震(作者:王咏刚 2004 年1 月)

作者: 来源:网络文章 时间:2005-12-17 18:48:43

[ZT]代码地震(作者:王咏刚 2004 年1 月)(7) 调用语句。修改时的任何一个遗漏都可能造成编译、链接
乃至运行时的致命错误。
避免通信接口中参数表重复的方法是使用提炼后的整
个数据结构作为参数来代替繁冗的参数表,例如,上面的
接口方法例子可以改为:
[WebMethod()]
public int GetTransactionsCount(GTCParamStruct
Param);
这样,当数据库结构的变化需要调整Web Service 接
口时,只要改写GTCParamStruct 结构的定义就可以了。
用户界面中的代码重复
在“代码地震”的案例里,客户端程序用户界面组件
中的代码重复占了代码重复总量的40%左右。其中,界面
控件的重复相当普遍。例如,客户程序A 的数据录入界面、
数据修改界面都需要罗列重复的控件,以录入或修改同样
的数据内容,客户程序B 中的HTML 控件显示的也是完全
相同的字段内容。当需求变更发生时,这些用户界面无一
例外都需要修改。客户程序C 是呼叫中心使用的语音处理
程序,其中的多个IVR 语音响应模块需要播报同样的字段
内容,它们之间也存在相当多的代码重复。
一些程序员倾向于使用动态绑定和动态界面生成技术
来解决用户界面的重复问题,即由动态生成程序根据数据
库中的表结构或特定格式的界面描述语言③自动生成用户
界面。不过,动态界面生成技术往往和具体的语言及开发
环境相关,很难在不同语言间移植;动态生成的用户界面
也总不如人工绘制的用户界面那样美观、精致。所以,大
多数程序员目前仍然会选择自行绘制用户界面,并容忍界
面代码重复的“权宜之计”。
界面编程中另一个值得注意的问题是数据合法性校验
模块的代码重复问题。在数据录入、数据修改、数据查询
等界面中,都需要对同样的字段进行合法性校验,这些校
验代码显然都是一模一样的。如果在设计和开发时没有把
校验代码提炼到公共组件中,那么,一旦业务需求改变了
字段的构成规则,我们就会手忙脚乱、顾此失彼了。
并发控制组件中的代码重复
“银证通”项目组在需求变更时遇到的最大障碍是:
服务程序B 管理共享资源的代码和数据库结构密切相关,
其中也存在不少代码重复的问题。解决这些代码重复问题
并不困难,真正困难的是,修改并发控制组件代码时的任
何疏漏,都有可能酿成并发冲突、服务终止、数据不完整
等难以预测和难以调试的“编程噩梦”。
因此,“银证通”项目组在系统升级的过程里,反复修
改代码、反复测试并反复遭遇失败的经历提醒我们,对于
涉及后台服务、并发控制等关键技术的软件系统,我们在
此前反复强调的,在设计和开发过程里及早防范和减少代
码重复的做法通常会具有更为重要的意义。
4 补充说明
有关代码重复的另一个定理是:在多人项目组内,如
果没有好的配置管理工具和完善的版本控制手段,避免代
码重复的提法就几乎等同于痴人说梦。
这是因为,解决程序之间、组件之间代码重复问题的
主要手段是将重复的代码提炼出来,放到共享的公共库中。
而在一个多人项目组内,开发和维护公共库代码的程序员
和开发和维护其他组件的程序员,必须借助一个版本控制
系统才能有效地协作,才不至于引发需求、版本或代码的
混乱。当项目组拥有一套支持共享的版本控制机制、功能
完善的版本控制软件时,我们甚至可以允许不同的程序员
同时维护公共库的代码,这显然可以大幅提高工作效率,
并在最大程度上防止代码的重复(参见《凌波微步》一书
中有关版本管理的章节④)。
5 总结一下
.. 重复代码意味着重复错误和重复风险;重复代码意味
着增加维护成本和减少项目收益。
.. 在设计和开发过程中应及早防范和减少代码重复。
① Fowler M 等著. 侯捷, 熊节译. 重构:改善既有代码的设
计. 北京: 中国电力出版社, 2003
② 郝刚. Duwamish7 大剖析之业务实体. CSDN 开发高手.

共8页 9 7 [1] [2] [3] [4] [5] [6] [7] [88 :>

[ZT]代码地震(作者:王咏刚 2004 年1 月) 相关文章:
[ZT]代码地震(作者:王咏刚 2004 年1 月) 相关软件:
特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
转载请注明来源:http://www.xgdown.com