phper談談最近重構代碼的感受(2)
2015-07-18 22:42
459 查看
重构代码更多的是对程序的可读性和可扩展性上做一些优化。
首先我对可读性进行细化。借鉴大神川山甲的重构系列文http://www.cnblogs.com/baochuan/archive/2012/03/31/2425441.html,我也来抛砖引玉。
面对一些有bad smell的代码,我们应该如何处理呢?
我觉得应该遵循面向对象的一些最基本的原则:封装,复用,抽象,继承,组合优先。
1.封装是第一原则,让客户端的调用变得更简单,封装细节,暴露同一接口。
封装的第一步就是消灭重复的代码块儿。我所说的代码块儿也包括同一个类,两个方法含有相同表达式。
比如列表显示查询这段:
如果function pending,function index()的查询只是某些字段不同,而查询内容相同。完全可以把公共的这段剥离出来,并传递不同查询参数。
下面就要说到可读性,$status =1 或者等于2的含义是什么,也许现在状态少还好理解,可如果以后状态更多了呢,有更多人参与这个项目的开发,去理解代码就需要更多成本。所以建议定义常量,让代码可读性变强。常量放到对应Model里面。
eg:
$query['status'] = SomeModel::APPROVED;
总结:DRY原则 + more readable.
首先我对可读性进行细化。借鉴大神川山甲的重构系列文http://www.cnblogs.com/baochuan/archive/2012/03/31/2425441.html,我也来抛砖引玉。
面对一些有bad smell的代码,我们应该如何处理呢?
我觉得应该遵循面向对象的一些最基本的原则:封装,复用,抽象,继承,组合优先。
1.封装是第一原则,让客户端的调用变得更简单,封装细节,暴露同一接口。
封装的第一步就是消灭重复的代码块儿。我所说的代码块儿也包括同一个类,两个方法含有相同表达式。
比如列表显示查询这段:
如果function pending,function index()的查询只是某些字段不同,而查询内容相同。完全可以把公共的这段剥离出来,并传递不同查询参数。
下面就要说到可读性,$status =1 或者等于2的含义是什么,也许现在状态少还好理解,可如果以后状态更多了呢,有更多人参与这个项目的开发,去理解代码就需要更多成本。所以建议定义常量,让代码可读性变强。常量放到对应Model里面。
eg:
$query['status'] = SomeModel::APPROVED;
总结:DRY原则 + more readable.
相关文章推荐
- php编译报错
- 如何用supervisor守护php-fpm主进程以实现php-fpm的自动重启
- 一个简单的php注册界面
- Windows上使用Vagrant打造Laravel Homestead可协同跨平台开发环境
- PHP编译过程中常见错误信息的解决方法
- php坑记录
- [stm32] STM32 Interrupts and events 系统了解(EXTI)及槽型光电开关tp850电路研究
- php学习
- LNMP下防跨站、跨目录安全设置,仅支持PHP 5.3.3以上版本
- PHP 字符串函数
- LinearLayout.LayoutParams动态设置子控件属性
- php学习
- PHP判断是否命令行运行的最好办法
- PHP使用NuSOAP调用Web服务的方法
- phper談談最近重構代碼的感受(1)
- php日期转时间戳,指定日期转换成时间戳
- PHP 时间与字符串的相互转化
- php使用ajax实现注册账号时判断账号是否已经存在
- 注册TexturePacker验证TP
- windows下安装php真正的多线程扩展pthreads教程