文档章节

程序进化论之素材

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

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

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

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

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

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

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

© 著作权归作者所有

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

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

wbf961127 ⋅ 2017/11/13 ⋅ 0

分享10个优美的程序员把玩儿的实用科技设计酷站(2)

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

Janet_zyh ⋅ 2017/11/19 ⋅ 0

专访变设龙:重新定义设计 颠覆传统企业图片管理方式

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

卢松松博客 ⋅ 2017/11/17 ⋅ 0

JeeWx 捷微 3.1 小程序版本发布,支持微信公众号,微信企业号,支付窗

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

Jeecg ⋅ 03/19 ⋅ 4

各大搜索引擎自动提示API

谷歌(Google) Api地址:www.google.com/s?hl=zh-cn&sugexp=llsin&q=设计 百度(baidu) Api地址:http://suggestion.baidu.com/su?wd=设计&p=3&cb=window.bdsug.sug 搜搜(soso) Api地址:http:......

JunDer ⋅ 2014/04/24 ⋅ 0

Kubernetes方法论之扫盲篇

随着容器逐渐受到企业的注意,焦点慢慢被转移到了容器编排工具上。复杂的工作负载在生产过程中需要成熟地被调度,编排,弹性扩容和管理工具。有了Docker,管理运行在主机操作系统上的容器以及...

Caicloud ⋅ 2016/06/06 ⋅ 0

《腾讯全球合作伙伴2017大会白皮书》AI解读之一:内容IGC

题图 文·HCY崇远 01 写在之前 2017年11月08号,腾讯全球合作伙伴大会2017在成都举行,别误会,俺不在现场,虽然我也很想去看看,当时的我在大深圳某个旮旯里打代码。但通过一个貌似亲临现场...

数据虫巢 ⋅ 2017/11/10 ⋅ 0

《每日一刻图形编程篇》-界面编程

C/C++资料视频素材答疑加群: 491994603 阅读须知: 工具:Visual Studio 2013/VC 6.00 (其他版本亦可)+EasyX(图形库插件) 素材: C/C++ 491994603 找小编即可 (群主或者专业答疑老师) 能力:C...

这个人很懒什么都没留下 ⋅ 2017/09/07 ⋅ 0

Navi.Soft31.微信WinForm框架(含下载地址)

1.概述 1.1应用场景 微信的出现,改变了我们日常生活。而微信公众平台的出现,使我们每个人都可能成为一个品牌,微商的普及、微店越来越多。越来越多的人,借助微信公众平台,实现了自己的梦...

小特工作室 ⋅ 2017/11/02 ⋅ 0

好程序需要你写(至少)两遍

最近这些年,越来越多的人开始转向敏捷开发。各种敏捷开发技术并不新鲜,大多是在80 和90年代发展形成。但只是在最近这些年,程序员和(更重要的是)一些商业顾问,架构师,客户开始变得喜欢和...

sevens2008 ⋅ 2011/11/01 ⋅ 10

没有更多内容

加载失败,请刷新页面

加载更多

下一页

十五周二次课

十五周二次课 17.1mysql主从介绍 17.2准备工作 17.3配置主 17.4配置从 17.5测试主从同步 17.1mysql主从介绍 MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主...

河图再现 ⋅ 56分钟前 ⋅ 0

docker安装snmp rrdtool环境

以Ubuntu16:04作为基础版本 docker pull ubuntu:16.04 启动一个容器 docker run -d -i -t --name flow_mete ubuntu:16.04 bash 进入容器 docker exec -it flow_mete bash cd ~ 安装基本软件 ......

messud4312 ⋅ 今天 ⋅ 0

OSChina 周一乱弹 —— 快别开心了,你还没有女友呢。

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享吴彤的单曲《好春光》 《好春光》- 吴彤 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :小萝莉街上乱跑,误把我认错成...

小小编辑 ⋅ 今天 ⋅ 7

mysql in action / alter table

change character set ALTER SCHEMA `employees` DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci ;ALTER TABLE `employees`.`t2` CHARACTER SET = utf8mb4 , COLLAT......

qwfys ⋅ 今天 ⋅ 0

Java 开发者不容错过的 12 种高效工具

Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松。目前,市面上涌现出越来越多的高效编程工具。所以,以下总结了一系列工具列表,其中包含了大多数开发人员已经使用...

jason_kiss ⋅ 昨天 ⋅ 0

Linux下php访问远程ms sqlserver

1、安装freetds(略,安装在/opt/local/freetds 下) 2、cd /path/to/php-5.6.36/ 进入PHP源码目录 3、cd ext/mssql进入MSSQL模块源码目录 4、/opt/php/bin/phpize生成编译配置文件 5、 . ./...

wangxuwei ⋅ 昨天 ⋅ 0

如何成为技术专家

文章来源于 -- 时间的朋友 拥有良好的心态。首先要有空杯心态,用欣赏的眼光发现并学习别人的长处,包括但不限于工具的使用,工作方法,解决问题以及规划未来的能力等。向别人学习的同时要注...

长安一梦 ⋅ 昨天 ⋅ 0

Linux vmstat命令实战详解

vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令...

刘祖鹏 ⋅ 昨天 ⋅ 0

MySQL

查看表相关命令 - 查看表结构    desc 表名- 查看生成表的SQL    show create table 表名- 查看索引    show index from  表名 使用索引和不使用索引 由于索引是专门用于加...

stars永恒 ⋅ 昨天 ⋅ 0

easyui学习笔记

EasyUI常用控件禁用方法 combobox $("#id").combobox({ disabled: true }); ----- $("#id").combobox({ disabled: false}); validatebox $("#id").attr("readonly", true); ----- $("#id").r......

miaojiangmin ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部