重构代码更多的是对程序的可读性和可扩展性上做一些优化。

首先我对可读性进行细化。借鉴大神川山甲的重构系列文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.

最新文章

  1. Markdown编辑器测试
  2. python 安装模块步骤
  3. Android带多选功能的PhotoPicker
  4. CPU Benchmarks
  5. Centos 6.5升级安装Git
  6. ARM GCC CodeSourcery 下载地址
  7. 【字典树】【贪心】Codeforces 706D Vasiliy's Multiset
  8. linux添加JAVA环境变量
  9. css05 字体以及行间距
  10. hibernate log4j
  11. C#/AutoCAD 2018/ObjectArx/二次开发添加图形对象步骤和添加直线的例子(三)
  12. thinkphp5: 循环输出表格,并固定表格单元宽度(过长省略号)
  13. Git 概念
  14. (转)get和post的区别
  15. JSP 页面跳转中的参数传递
  16. shiro配置说明
  17. 使用jquery.uploadify动态传递自己的参数
  18. @ERR Unsupported CONFIG parameter: notify-keyspace-events
  19. HDU 4055 Number String (计数DP)
  20. Agile.Net 组件式开发平台 - 驱动开发示例

热门文章

  1. python向mysql中存储JSON及Nodejs取出
  2. leetcode [64] merge tow sorted lists
  3. C#将XML转换成JSON转换XML
  4. CSS知识点:选择符
  5. Javascript多线程引擎(二)
  6. C# dll 事件执行 js 回调函数
  7. Orchard Module,Theme,Core扩展加载概述
  8. 软件协作工具Trello
  9. SignalR的服务器广播
  10. cefsharp实现javascript回调C#方法