什么是代码质量
优化代码结构的设计模式
策略模式/状态模式
例子
- 目的:优化if-else分支
- 应用场景:当代码if-else分支过多时
假如要编写一个计算器, 有加减乘除,我们可以把一层一层的if判断,变成这样的形式
策略模式基本结构
function Strategy(type, a, b){var Strateger = {add: function(a,b){return a+b;},minus: function(a,b){return a-b;},division: function(a,b){return a/b;},}return Strateger[type](a,b);}
状态模式的基本结构
function stateFactor(state){var stateObject = {_state: "",state: {state1: function(){ },state2: function(){ },},run: function(){return this.state[this._state]()},}stateObject._state = state;return stateObject}stateFactor('state1').run();
外观模式
- 目的:通过为多个复杂的子系统提供一个一致的接口
- 应用场景:当完成一个操作,需要操作多个子系统,不如提供一个更高级的
基本结构
// 我们在组织方法模块时,可以细化多个接口,但是我们给别人使用时,要合为一个接口,就像你可以直接去餐厅点套餐// 模块1function Model1(){}// 模块2function Model2(){}// 功能由model1和model2的结果来完成function use(){Model2(Model1())}
优化代码操作的设计模式
迭代器模式
目的:不访问内部的情况下,方便的遍历数据
- 应用场景:当我们要对某个对象进行操作,但是又不能暴露内部
基本结构
// 在不暴露对象内部结构的同时,可以顺序的访问对象内部,可以帮助我们简化循环,简化数据操作function Iterator(item){this.item = item;}Iterator.prototype.dealEach = function(){for(var i = 0; i< this.item.length; i++){fn(this.item[i],i);}}
备忘录模式
目的:记录状态,方便回滚
- 应用场景:当状态多样, 为了保证状态的回滚方便, 记录状态
- 基本结构
/// 记录对象内部的状态, 当有需要时回滚之前的状态或者方便对象使用function Memento(){var cache = {};return function(cacheName){if(cache[cacheName]){// 有缓存的操作}else {// 没有缓存的操作}}}var MementoFn = Memento();MementoFn("xxx")
