代码重构技巧
来源:互联网 发布:pc蛋蛋外围算账软件 编辑:程序博客网 时间:2024/05/28 22:12
代码重构
提炼函数规则
a. 避免出现超大函数
b. 独立出来的函数有助于复用
c. 独立出来的函数更容易被覆写
c. 独立出来的函数命名规范合并重复的条件片段
var paging = function(currPage){ if( currPage <= 0){ currPage = 0; }else if( currPage >= totalPage){ currPage = totalPage; } jump( currPage); }
- 把条件分支提炼成函数
合理使用循环
var createXHR = function () { var versions = ['http.6.0','http.3.0','http.2.0']; for( var i = 0,version; version = versions[i++];){ try{ return new ActiveXObject( version ); }catch(e){} } }
提前让函数退出嵌套条件分支
嵌套分支对于函数维护无疑时噩梦般存在,当我们不需要执行剩余函数时,可以立即退出。
var del = fuction( obj ){if( obj.isReadOnly ){ return;}if( obj.isFolder ){ return;}if( obj.isFile ){ return;}}
- 传递对象参数代替过长的参数列表
- 函数参数过多难以理解,参数位置错位会导致函数无法正常执行,这时我们可以把参数放入对象中,然后把对象传入函数,这样不必关心参数的数量和顺序。
- 尽量减少参数
- 少用三目运算,增加代码阅读性
- 合理使用链式调用
- 链式调用不利用bug修改和维护
分解大型类
- 将Spirit类的攻击动作委托给Attact类的对象执行,避免Spirit类承担过多的责任;同理,Spirit类的防御可以委托给防御类
var Attack = function (spirit) { this.spirit = spirit;}Attack.prototype.start = function (type) { return this.list[ type ].call(this)}Attack.prototype.list = { waveBoxing:function () { console.log(this.spirit.name+“使用波动拳”) }, whirlkick:function () { console.log(this.spirit.name+“使用旋风踢”) }}var Spirit = function (name) { this.name = name; this.attackOjb = new Attack( this );}Spirit.prototype.attack = function (type) { this.attackOjb.start( type );}var spirit = new Spirit( 'dog' );spirit.attack( 'waveBoxing');spirit.attack( 'whirlKick');
用return退出多重循环
- 给循环设置标记mark,以及使用break的方式会增加代码的复杂度;我们可以直接用return直接退出整个循环方法,为了解决退出循环时,循环之后的一些代码不能执行的问题,可以采用return fn 的形式
var func = function(){ for( var i = 0;i < 10; i++){ if( i > 5 ){ return console.log( i ); } }}
以上代码均借鉴《JavaScript 设计模式与开放实践》
阅读全文
0 0
- 代码重构技巧
- 代码重构技巧
- 代码重构技巧
- 代码重构技巧
- 代码重构技巧
- 代码重构技巧方法
- JavaScript代码重构技巧
- 代码重构的技巧
- 【JAVA】代码重构技巧
- 一个重构代码的小技巧
- C#代码重构技巧总结
- Make bad code good (代码重构技巧)
- ios中的代码重构技巧-实用!
- 代码重构的技巧——合理使用@Deprecated
- 重构技巧学习
- 重构技巧
- 浅谈重构技巧
- 重构技巧
- 微服务介绍
- 几种数据库编程接口
- NB-IoT智能医疗创造新一代智能健康服务
- Win10秘笈:两种方式修改网卡物理地址(MAC)
- 事务的隔离级别
- 代码重构技巧
- 清除浮动的几种方法
- DB2 SQL1042C SQLSTATE=58004的现象及恢复
- 哈希存储之VALUE篇
- iOS图片加载框架-SDWebImage
- Spring支持如下5种作用域
- git crlf换行符问题解决
- java抽象类与接口
- 分治算法