关于软件系统维护的一点想法
众所周知,系统维护是很头疼的,需要维护的有以下几个地方:
1. 在使用过程中用户提出新的需求变更,要求修改系统;
2. 系统有bug,需要修改完善;
3. 系统运行的外部环境发生变化,需改进行维护,比如:数据库迁移等;
系统维护面临的困难也有如下几点:
1. 你不是系统的最初开发组成员,理解别人的代码有难度;
2. 系统缺乏必要的项目文档,造成对业务不熟悉,对项目整体把握不足;
3. 代码不规范,造成代码可维护性不好;
4. 软件维护的工作没有吸引力,使维护的开发人员没有成就感。
我个人觉得要降低系统维护的成本,最主要的是代码质量,其次是业务流程文档,再次是开发文档。对程序员而言,最好的文档就是代码。良好的代码结构层次可以大大降低维护工作量。如何组织良好的代码结构是我想说的重点。我这里并不讨论多层数据访问,也不讨论OO的思想,想说说关于一些组织代码的细节。
场景1:我们常常遇到这种情况,有一ComboBox需要加载某基础数据项(假设为客户名称),需要用到 id和name两个属性;因为客户资料有多个地方用到,所以有多个界面用到类似的combobox。Binding数据的代码也都相同,分布在多个界面中。当初客户的需求是必须从下拉项中选择客户,所以多个界面也都设置好了属性,不允许编辑,只能从列表选择。现在客户改变了需求,需要增加查询的功能,在combobox中输入内容回车后,按模糊查询的结果列出来。于是一个一个界面的改,oh,my god,终于改完了。第2次,客户又提出类似的需求,要求对另一个基础数据(物料)也如此修改。开发人员又做重复劳动,一个一个界面改完了。那如果我们这些基础数据的列表集中起来管理不是更好吗?
那就建一个类:
public class CustomerComboBOxHelper
{
private ComboBox cmb = null;
public CustomerComboBOxHelper(ComboBox cmb)
{
this.cmb = cmb;
//do something;
}
}
这样所有需要用到客户资料ComboBox的界面,直接调用此方法,当然如果由工厂创建实例更好。类似的需求还有,有时我们需要多处用到级联的ComboBox,比如显示:省,市,选择某个省,列出省下面的所有城市,这样的控制代码显然是一样的,那么我们也可以把它封装在一起,节省维护的成本;
场景2:系统中用得非常多的消息提示(MessageBox),winform项目中到处都是类似这样的代码:MessageBox.Show("程序异常,请联系管理员!详细信息:" + ep.Message, xxxx系统, MessageBoxButtons.OK, MessageBoxIcon.Information);或者其它的类似的代码。客户提出需求变更,这样的错误消息提示不够友好,要求修改。你就慢慢一个一个去改吧。那为什么不把所有的MessageBox的方法封装在一起,包括显示错误消息,显示提示消息,显示Y/N,显示Ok/Cancel等等;参考代码:
public static class MessageBoxEx
{
public static DialogResult AskYesNo(string text)
{
//do some thing
}
public static DialogResult AskOkCancel(string text)
{
//do some thing
}
public static void ShowInfo(string text)
{
//do some thing
}
public static void ShowError(Exception ep)
{
//do some thing
}
}
当然,显示错误信息的方法单独写成一个类也行,这样如果想修改成自定义的界面显示错误消息,也仅仅只需要修改一处即可。
篇幅有限,上面讲的都是一些细节,这样的场景还有很多,但是它们都遵循一个原则,封装。尽可能使多处用到的代码封装在一起,辅以必要的注释,相信会大大减少项目维护的工作量。
转载于:https://www.cnblogs.com/michael-zhangyu/archive/2008/05/27/1208620.html
关于软件系统维护的一点想法相关推荐
- 关于我们小组共享学习的一点想法:
关于我们小组共享学习的一点想法: (一,关于分工) 学习某个技术的时候,采用领衔制,1个或2个人领衔一个技术项,可以有1个或2个副手,组内 所有人都是参与者. 分享的时候,主要讲解的是 ...
- 关于《关于一道C#上机题的一点想法》
看了<关于一道C#上机题的一点想法>和<泛型委托>两篇文章,深有感触,还是关于下面这道题: 题目:17个人围成一圈,从第一个人开始报数,报到3的退出,一直到剩下最后一个人,用面 ...
- 关于标签系统的又一点想法。
前段时间,写过一篇<关于标签系统的一点想法.>.但其实没有谈到里面的内容,是有一部分来自与刘鑫老师的聊天,当时他给了我许多肯定,也是让我觉得记录下来很有必要的原因. 前一篇里没有提到,我跟 ...
- python链表和树实验报告_关于Python实现树结构和链表结构的一点想法
关于Python实现树结构和链表结构的一点想法 Python由于内置的数据结构具有很高的灵活性,所以可以用很多种方式来构建树.图.链表等结构 1. 树的Python实现 python自然可以使用cla ...
- php系统维护,软件系统维护主要包含什么
软件系统维护主要包含软件系统正常使用要求与定期维护.软件系统初始化安装的维护准备.软件是用户与硬件之间的接口界面,用户主要是通过软件与计算机进行交流. 本文操作环境:windows系统.thinkpa ...
- java mvp开发_如何从没有软件开发技能的想法变成现实的市场MVP?️?
java mvp开发 by Mike Williams 由Mike Williams 如何从没有软件开发技能的想法变成现实的市场MVP?️? (How to go from idea to live ...
- 关于产品与数据该如何结合的一点想法(一)
最近一直在思考数据分析的定位问题,究竟是该扛上业务指标,还是应该跳出业务,一直被这个问题困扰的我想应该不只我一人,很多人,很多公司都被困扰,暂且放下争议,归纳一下我对如何将数据分析和产品有效结合的一点 ...
- 2023-01-03 有关C++继承多态的一点想法
有关C++继承多态的一点想法 前言 一.面向对象, 多态, 继承和你想的可能是相反的 二.面向对象, 遵从简单的原则 总结 前言 最近看了一道题目, C++实现多态的时候父类指针如何调用子类独有的数据 ...
- 易语言和python混合编程_关于易语言与Python的一点想法
易语言与python的一点想法">关于易语言与Python的一点想法 小香蕉 2019年7月11日 说在前面 最近吃饭的时候总是会想很多关于易语言的事情.易语言是我学会的第一门语言,虽 ...
最新文章
- POJ 2586 Y2K Accounting Bug(贪心)
- 进阶指令——df指令(作用:查看磁盘的空间)、free指令(作用:查看内存使用情况)、head指令(作用:查看一个文件的前n行,如果不指定n,则默认显示前10行)、tail指令、less指令
- mysql 宽字符注入_sql注入 宽字节注入
- 关于推荐系统的一些小结
- 大二上学期总结计算机专业,计算机学生的大二第二学期自我总结-自我总结
- 程序员修神之路--redis做分布式锁可能不那么简单
- python协同过滤电影推荐_基于协同过滤的电影推荐系统的设计与实现
- Linux基础_Hadoop环境搭建必备
- 基于Linux下的Nand (Nor) Flash读写速度测试
- 【收藏】2004年最值得推荐的管理类书籍
- Inno自定义界面学习笔记(一)
- namecheap如何解析域名
- 支付宝 客户端 Android 集成流程
- 局域网内的ARP断网攻击
- thinkpad x61s 插 pcmia 安装 openwrt 启用双网卡
- matlab ptb安装,PTB之MATLAB编程:实验流程
- 属性详解(@property/@dynamic/@synthesize)
- hadoop个人总结
- 想要在华为云上部署javaweb项目怎么做
- Java网络编程之实现资源下载详解【王道Java】