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新手上路(七)
Oct 09 PHP
php实现jQuery扩展函数
Oct 30 PHP
按上下级层次关系输出内容的PHP代码
Jul 17 PHP
Linux下实现PHP多进程的方法分享
Aug 16 PHP
LotusPhp笔记之:基于ObjectUtil组件的使用分析
May 06 PHP
解析php中die(),exit(),return的区别
Jun 20 PHP
php文件夹与文件目录操作函数介绍
Sep 09 PHP
php抓取并保存网站图片的实现代码
Oct 28 PHP
PHP函数超时处理方法
Feb 14 PHP
利用Laravel生成Gravatar头像地址的优雅方法
Dec 30 PHP
php判断某个方法是否存在函数function_exists (),method_exists()与is_callable()区别与用法解析
Apr 20 PHP
laravel入门知识点整理
Sep 15 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
中国第一家无线电行
2021/03/01 无线电
PHP 采集程序 常用函数
2008/12/18 PHP
php 启动报错如何解决
2014/01/17 PHP
Laravel实现表单提交
2017/05/07 PHP
实例讲解通过​PHP创建数据库
2019/01/20 PHP
PHP Trait功能与用法实例分析
2020/06/03 PHP
input点击后placeholder中的提示消息消失
2016/01/15 Javascript
当jquery ajax遇上401请求的解决方法
2016/05/19 Javascript
Vue组件tree实现树形菜单
2017/04/13 Javascript
JavaScript纯色二维码变成彩色二维码
2020/07/23 Javascript
jQuery实现全选、反选和不选功能
2017/08/16 jQuery
解决Jquery下拉框数据动态获取的问题
2018/01/25 jQuery
vue最简单的前后端交互示例详解
2018/10/11 Javascript
layui 实现自动选择radio单选框(checked)的方法
2019/09/03 Javascript
Vue移动端用淘宝弹性布局lib-flexible插件做适配的方法
2020/05/26 Javascript
Vue 实现一个简单的鼠标拖拽滚动效果插件
2020/12/10 Vue.js
JavaScript中跨域问题的深入理解
2021/03/04 Javascript
Python sys.path详细介绍
2013/10/17 Python
python正则表达式去掉数字中的逗号(python正则匹配逗号)
2013/12/25 Python
python异步任务队列示例
2014/04/01 Python
python将字符串转换成数组的方法
2015/04/29 Python
postman模拟访问具有Session的post请求方法
2019/07/15 Python
python实现遍历文件夹图片并重命名
2020/03/23 Python
4行Python代码生成图像验证码(2种)
2020/04/07 Python
Python更换pip源方法过程解析
2020/05/19 Python
解决HTML5手机端页面缩放的问题
2017/10/27 HTML / CSS
房地产财务管理制度
2014/02/02 职场文书
企业年会主持词
2014/03/27 职场文书
幼儿园中班评语大全
2014/04/17 职场文书
保密工作整改情况汇报
2014/11/06 职场文书
2014年宣传部个人工作总结
2014/12/06 职场文书
优秀党员个人总结
2015/02/14 职场文书
法制教育观后感
2015/06/17 职场文书
新闻简讯格式及范文
2015/07/22 职场文书
手写实现JS中的new
2021/11/07 Javascript
python中的sys模块和os模块
2022/03/20 Python