PHP代码维护,重构变困难的4种原因分析


Posted in PHP onJanuary 25, 2016

本文分析讲述了PHP代码维护,重构变困难的4种原因。分享给大家供大家参考,具体如下:

代码维护,重构是件很令人不爽的一件事。以下几种情况,会让代码维护和重构变得很困难。

1. 项目开始时,大家规定好一些代码规范,在一定的规范下进行开发,但是人的思想是不一样的,也就是说每个功能不同的人实现的逻辑可能会有这样那样的不同,导致了一些人不愿意去看别人代码,要改别人代码,首先要了解这个人当时是怎么想的,他的逻辑是怎么样的。所以有很多人的想法是有那看别人代码的时间,我就重新做好了。这种想法不要有,看别人代码也能学到不少东西。如果都这样想,我想冗余代码会越来越多,后期重构会变的越来越困难。

2. 做程序的一般跳槽都比较频繁,项目开始的时候,是5个人(项目创始人)开发的,等项目上线了,可能有人离职了。人手不够,公司招人。项目创始人呢,对新招的人,不太信认,怕修改原代码会导致上线的功能出问题,所以就出了新规定,最好不要修改上线过的程序,如果需求变动,最好重新写class或者是function,这样的话,代码会变的越来越多。可能会出现几个class都差不多,或者多个function的功能差不多。

3. 数据库冗余字段,冗余表过多,也会让代码维护变的十分困难。因为功能优化,或者新需求,导致原有表结构根本不能满足新需求,这个时候,就会去表里添加字段,或者挂接另一个表,长期以往,数据库变的很臃肿,数据库一大,代码肯定就不用说了,程序都是围绕着数据来的,冗余字段,冗余表都要维护的,不然数据就不统一了。必要的冗余可以减少数据库查询,如果过多,只会事得其返。所以在修改数据库时更要考虑清楚,考虑将来数据库和代码要重构的情况。

4. 个人原因是最主要的原因,首先要有分块思想,也可以说是oop思想,这种思想是在实战中养成的,这个是要一定时间的。不要为了急着去实现功能而忽视了整体考虑。假如来了一个新需要,我会首先考虑怎么实现这个需求,有了思路后,我也不会急着去开发这个功能,我还会在考虑这个功能模块,会不会用在其他地方?如果其他地方用,怎么样让其他地方用着更方便。我会让所以调用这个功能模块的地方,接口只有一个。然后我才会着手去开发。还有一点,不要相信需求定下来就不会变了,不会的。人的想法很多,开发代码的时候,这一点也要考虑进去,所以统一的接口在需求变动时,我只要修改一个地方,其他地方都可以改掉。如果这样考虑了,前期开发时,时间会多一点,但是后期维护就快很多。

小结一下,有了上面4点,重构数据库,重构代码将是必然的

1. 人的思想不可能一样,大家都在尽量往一处想,但是总会有这样,那样的不同。
2. 急于要完成功能,而不深入了解别人代码。研究别人代码不如重新开发快,这种思想不好。
3. 数据库冗余,这个我个人觉得必然会出现的,一个项目做大,做强,一定是在不断的成长,成长过程中,数据库不可能是一成不变的。
4. 缺少分块思想,我觉得一个项目,就是很多功能独立的小块通过一定线串起来的,代码重构也就是把这些小块的重新组合,当然各个小块,在重构前后实现的功能会不一样,但它还是为了实现一定的功能,只不过由旧变新而已。

上面的几点是我在开发项目过程实际遇到的,欢迎大家补充。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装最快的解决办法
Aug 01 PHP
php从右向左/从左向右截取字符串的实现方法
Nov 28 PHP
php调整gif动画图片尺寸示例代码分享
Dec 05 PHP
PHP制作图形验证码代码分享
Oct 23 PHP
ThinkPHP3.2.1图片验证码实现方法
Aug 19 PHP
PHP实现上一篇下一篇的方法实例总结
Sep 22 PHP
PHP接口并发测试的方法(推荐)
Dec 15 PHP
php使用preg_match()函数验证ip地址的方法
Jan 07 PHP
php实现文件与16进制相互转换的方法示例
Feb 16 PHP
php基于自定义函数记录log日志方法
Jul 21 PHP
如何利用预加载优化Laravel Model查询详解
Aug 11 PHP
PHP延迟静态绑定的深入讲解
Apr 02 PHP
PHP+apc+ajax实现的ajax_upload上传进度条代码
Jan 25 #PHP
PHP实现的oracle分页函数实例
Jan 25 #PHP
PHP设置头信息及取得返回头信息的方法
Jan 25 #PHP
基于命令行执行带参数的php脚本并取得参数的方法
Jan 25 #PHP
crontab无法执行php的解决方法
Jan 25 #PHP
win7安装php框架Yii的方法
Jan 25 #PHP
php结合md5实现的加密解密方法
Jan 25 #PHP
You might like
php随机获取金山词霸每日一句的方法
2015/07/09 PHP
mysql查找删除重复数据并只保留一条实例详解
2016/09/24 PHP
基于php实现的验证码小程序
2016/12/13 PHP
JavaScript 学习笔记 Black.Caffeine 09.11.28
2009/11/30 Javascript
jQuery之Deferred对象详解
2014/09/04 Javascript
基于Bootstrap+jQuery.validate实现Form表单验证
2014/12/16 Javascript
深入理解JavaScript系列(42):设计模式之原型模式详解
2015/03/04 Javascript
javascript实现通过表格绘制颜色填充矩形的方法
2015/04/21 Javascript
js控制div弹出层实现方法
2015/05/11 Javascript
jQuery插件EnPlaceholder实现输入框提示文字
2015/06/05 Javascript
基于Bootstrap重置输入框内容按钮插件
2016/05/12 Javascript
JS实现仿PS的调色板效果完整实例
2016/12/21 Javascript
详解vue2路由vue-router配置(懒加载)
2017/04/08 Javascript
jquery获取链接地址和跳转详解(推荐)
2017/08/15 jQuery
JavaScript类的继承操作实例总结
2018/12/20 Javascript
Vue通过getAction的finally来最大程度避免影响主数据呈现问题
2020/04/24 Javascript
vue-quill-editor的使用及个性化定制操作
2020/08/04 Javascript
Openlayers实现测量功能
2020/09/25 Javascript
[46:04]Liquid vs VP Supermajor决赛 BO 第四场 6.10
2018/07/05 DOTA
python 时间戳与格式化时间的转化实现代码
2016/03/23 Python
利用Pandas 创建空的DataFrame方法
2018/04/08 Python
Selenium定位元素操作示例
2018/08/10 Python
利用nohup来开启python文件的方法
2019/01/14 Python
Django对数据库进行添加与更新的例子
2019/07/12 Python
Python中typing模块与类型注解的使用方法
2019/08/05 Python
Python求解正态分布置信区间教程
2019/11/20 Python
python破解同事的压缩包密码
2020/10/14 Python
软件工程师面试题
2012/06/25 面试题
办公室秘书自我鉴定
2014/01/18 职场文书
事务机电主管工作职责
2014/02/25 职场文书
财务总监岗位职责
2014/03/07 职场文书
2014年教师党员公开承诺书
2014/05/28 职场文书
大学生求职信
2014/06/17 职场文书
简易版租房协议书范本
2014/10/13 职场文书
大学生实习证明
2015/06/16 职场文书
撤回我也能看到!教你用Python制作微信防撤回脚本
2021/06/11 Python