最近刚好在写一份关于系统维护的应标书,突然对系统维护有了一点想法。

众所周知,系统维护是很头疼的,需要维护的有以下几个地方:

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. 关于我们小组共享学习的一点想法:

    关于我们小组共享学习的一点想法: (一,关于分工)     学习某个技术的时候,采用领衔制,1个或2个人领衔一个技术项,可以有1个或2个副手,组内 所有人都是参与者.     分享的时候,主要讲解的是 ...

  2. 关于《关于一道C#上机题的一点想法》

    看了<关于一道C#上机题的一点想法>和<泛型委托>两篇文章,深有感触,还是关于下面这道题: 题目:17个人围成一圈,从第一个人开始报数,报到3的退出,一直到剩下最后一个人,用面 ...

  3. 关于标签系统的又一点想法。

    前段时间,写过一篇<关于标签系统的一点想法.>.但其实没有谈到里面的内容,是有一部分来自与刘鑫老师的聊天,当时他给了我许多肯定,也是让我觉得记录下来很有必要的原因. 前一篇里没有提到,我跟 ...

  4. python链表和树实验报告_关于Python实现树结构和链表结构的一点想法

    关于Python实现树结构和链表结构的一点想法 Python由于内置的数据结构具有很高的灵活性,所以可以用很多种方式来构建树.图.链表等结构 1. 树的Python实现 python自然可以使用cla ...

  5. php系统维护,软件系统维护主要包含什么

    软件系统维护主要包含软件系统正常使用要求与定期维护.软件系统初始化安装的维护准备.软件是用户与硬件之间的接口界面,用户主要是通过软件与计算机进行交流. 本文操作环境:windows系统.thinkpa ...

  6. java mvp开发_如何从没有软件开发技能的想法变成现实的市场MVP?️?

    java mvp开发 by Mike Williams 由Mike Williams 如何从没有软件开发技能的想法变成现实的市场MVP?️? (How to go from idea to live ...

  7. 关于产品与数据该如何结合的一点想法(一)

    最近一直在思考数据分析的定位问题,究竟是该扛上业务指标,还是应该跳出业务,一直被这个问题困扰的我想应该不只我一人,很多人,很多公司都被困扰,暂且放下争议,归纳一下我对如何将数据分析和产品有效结合的一点 ...

  8. 2023-01-03 有关C++继承多态的一点想法

    有关C++继承多态的一点想法 前言 一.面向对象, 多态, 继承和你想的可能是相反的 二.面向对象, 遵从简单的原则 总结 前言 最近看了一道题目, C++实现多态的时候父类指针如何调用子类独有的数据 ...

  9. 易语言和python混合编程_关于易语言与Python的一点想法

    易语言与python的一点想法">关于易语言与Python的一点想法 小香蕉 2019年7月11日 说在前面 最近吃饭的时候总是会想很多关于易语言的事情.易语言是我学会的第一门语言,虽 ...

最新文章

  1. POJ 2586 Y2K Accounting Bug(贪心)
  2. 进阶指令——df指令(作用:查看磁盘的空间)、free指令(作用:查看内存使用情况)、head指令(作用:查看一个文件的前n行,如果不指定n,则默认显示前10行)、tail指令、less指令
  3. mysql 宽字符注入_sql注入 宽字节注入
  4. 关于推荐系统的一些小结
  5. 大二上学期总结计算机专业,计算机学生的大二第二学期自我总结-自我总结
  6. 程序员修神之路--redis做分布式锁可能不那么简单
  7. python协同过滤电影推荐_基于协同过滤的电影推荐系统的设计与实现
  8. Linux基础_Hadoop环境搭建必备
  9. 基于Linux下的Nand (Nor) Flash读写速度测试
  10. 【收藏】2004年最值得推荐的管理类书籍
  11. Inno自定义界面学习笔记(一)
  12. namecheap如何解析域名
  13. 支付宝 客户端 Android 集成流程
  14. 局域网内的ARP断网攻击
  15. thinkpad x61s 插 pcmia 安装 openwrt 启用双网卡
  16. matlab ptb安装,PTB之MATLAB编程:实验流程
  17. 属性详解(@property/@dynamic/@synthesize)
  18. hadoop个人总结
  19. 想要在华为云上部署javaweb项目怎么做
  20. Java网络编程之实现资源下载详解【王道Java】

热门文章

  1. My97DatePicker日期控件的使用
  2. docker安装以及部署springboot项目
  3. Android之通过VideoView控件播放一个视频出现的问题以及我的解决办法
  4. parameterType 属性、typeAliases 别名
  5. PowerDesigner生成数据库刷库脚本
  6. JDK8利用Stream为集合对象分组并编号
  7. SpringMVC防止XSS攻击
  8. 日常 Python 编程优雅之道
  9. Condition 接口
  10. 简直要逆天!超炫的 HTML5 粒子效果进度条