文档章节

程序进化论之素材

AlbertBoy
 AlbertBoy
发布于 2015/11/03 13:54
字数 1086
阅读 8
收藏 0
 工作有几年了,主要干的是系统维护工作,维护一个庞大而臃肿的erp系统,说它庞大,是因为这个erp系统已经在前前后后快12年的时间里经过了无数次的改造,增添了各种奇思妙想,早已面目全非,说它臃肿,是因为这些奇思妙想是各种重复的功能的叠加。然而从软件工程的角度来讲,我们并没有做的很好,没有很好的梳理和管理代码,导致系统功能和系统代码一起变得臃肿,速度自然也像老牛拉破车了。细说其实还是存在很多客观因素的,但这并不妨碍程序进化论的探讨,程序进化论就是在这些客观因素存在的情况下,探讨如何进行程序的进化的。

 代码重复,代码复用,这个一直困扰我的问题时至今日也未能很好的解决,但我却有了点想法。事情是这样,我们有一串流程类的业务,它们之间的关系是前后锁定的,就是下步操作了,上一步将无法执行,其实这种流程很常见。但是我遇到了一个棘手的问题,这些前后的锁定代码逻辑,是写在各自的业务后台程序里的,即使它们之间的代码是完全一样,这导致了一个严重的后果,牵一发动全身,不仅如此,要知道这种所谓的锁定是存在各种各样的小后门的,就像这个社会一样,仅有知道的人才知道。因此我常在修正这些锁定的逻辑后,数周或者数月,修正前的问题突然又冒出来了,就像我什么都没干一样,这是令人极其沮丧的。追查后才发现是有个不为众人所知的小后门导致的,于是开始搜寻是否存在同样类似的小后门,要知道海底捞针是极其痛苦的事情。

 其实并不是否定这些小后门不应该,而是我们的程序并没有适应这种变化,我们的程序本身就是为了服务于各种繁杂业务而存在的,但当业务变更时(这很常见),可以理解为环境变化时,我们的程序并没有适应这种变化,这当然适应不了,因为当初程序不是这么设计的,但现实是当初的设计不能满足现状了,因此修改程序是不可避免的,所以问题的关键就在,如何修改程序,才能让我减少这种问题带来的痛苦,这也是进化论的关键之一。

 记得设计模式里面有个OOD,叫做封装变化,这里可以借鉴,以我目前的经历,我觉得应该可以把各种前后的锁定逻辑做成接口,把已经写在各自业务后台里的代码抽离出来,统统调用接口,这样以后改接口就好了,对于这些小后门,当我们要新增一个小后面的时候,不要直接通过改数据档来完成这个功能,而是通过将相关的业务后台做成接口,用小后门来调用这些接口来实现功能,这样即使不知道小后门的存在,无不会影响小后门的功能,我们只需修改下接口,一切就OK了。

 所以程序进化论的关键不是在于程序本身的适应性,而是环境变化时,我们作为程序维护人员,应该如何修正程序,来适应这种环境变化,这种修正的方法应该像基因一样,刻入到每个维护人员的骨子里,一旦出现这种状况,这个基因就是发挥其效能的时候了。

——————————————————————————————————————————————————

   第一次写博文,记录下自己的想法,希望对以后有帮助,我知道大概已经有书讲解过类似的问题,但是我还是想自己梳理下自己的思维,让自己成长。

© 著作权归作者所有

共有 人打赏支持
AlbertBoy
粉丝 1
博文 6
码字总数 2083
作品 0
武汉
高级程序员
分享几个国外模板网站(网页素材的下载)

成立正式用户,从公司的简介中发现他们做模板是根据用户需求以及使用风格,有专门的行情分析师(懂这个公司业务的)和专业美工人员。销售客服人员等等。就想一个小小的设计系统,从采单到设计到...

wbf961127
2017/11/13
0
0
专访变设龙:重新定义设计 颠覆传统企业图片管理方式

俗话说的好,佛靠金装,人靠衣装,三分长相,七分打扮。喜欢一个人,始于颜值,陷于才华,忠于人品!爱一个产品,始于颜值,陷于效果,忠于品质!产品的成功除了做好内功,最重要的是靠包装。图...

卢松松博客
2017/11/17
0
0
分享10个优美的程序员把玩儿的实用科技设计酷站(2)

今天豪哥哥为优美的程序员们带来了科技设计酷站第2期!哈哈哈~~~都是非常实用的推荐呦!快来看看吧~~~O(∩_∩)O~ MOODILY Moodly 是一款能够搜集各种灵感素材和设计图片的在线情绪板协...

Janet_zyh
2017/11/19
0
0
JeeWx 捷微 3.1 小程序版本发布,支持微信公众号,微信企业号,支付窗

支持小程序,JeeWx捷微3.1小程序版本发布^^ JeeWx捷微V3.1——多触点小程序版本管理平台(支持微信公众号,微信企业号,支付窗) JeeWx捷微V3.1.0版本紧跟微信小程序更新,在原有多触点版本基...

Jeecg
03/19
0
4
JAVA版开源微信管家—JeeWx捷微3.2版本发布,支持微信公众号,微信企业号,支付窗、小程序

JeeWx捷微3.2微信企业号升级版本发布^_^ JeeWx捷微V3.2——多触点管理平台(支持微信公众号,微信企业号,支付窗、小程序) JeeWx捷微V3.2.0版本引入了更多新特性,支持微信公众号、微信企业...

Jeecg
07/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Flask 开发填坑

插件的选择: flask-security 真的是个鸡肋啊。自带的页面,好丑。还不如用flask-login来做呢。

pearma
22分钟前
0
0
讲述下 :LVM逻辑卷管理遇到的问题

LVM学习逻辑卷管理创建逻辑卷遇到的问题 1 实验环境 系统 内核 发行版本 CentOS 2.6.32-754.2.1.el6.x86_64 CentOS release 6.10 (Final) 由于是最小化安装没有xfs命令,yum安装如下包支持此...

linuxprobe16
57分钟前
0
0
day95-20180922-英语流利阅读-待学习

Hey Jude 半个世纪传唱不衰的背后故事 毛西 2018-09-22 1.今日导读 2004 年,The Beatles 被《滚石》杂志选为“历史上最伟大的 50 位流行音乐家的第一位”。这四名来自英国利物浦的男孩不仅对...

飞鱼说编程
今天
2
0
OSChina 周六乱弹 —— 放假前期焦虑症晚期

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @andonny :分享Matteo的单曲《Panama》: 《Panama》- Matteo 手机党少年们想听歌,请使劲儿戳(这里) @新垣吉衣OSC :我发现只要去有小朋友...

小小编辑
今天
223
10
wait()被notify()后,接着执行wait()后面的语句

wait()被notify()后,接着执行wait()后面的语句

noteman
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部