重构就是在不改变软件现有功能的基础上,通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。
重构的注重点:
1.重构一步就测试一步,保证程序不会出现错误。
2.每个函数只实现一个功能,分的越细,代码复用率越高
3.函数名符合规范,见名知意。
4.controller中只写调用功能方法实现对view控制
5.用underscore替代各种循环。
重构实例:
我做的是一个有关报名竞价的应用,其中涉及到通过短信报名相关活动,报过名的的人可以参加后面的竞价,其中涉及到短信提取和存储。下面的messages就是用来存储报名信息的数组,activities为存储的活动和信息。
1.数组定义
之前定义数组:
var messages = JSON.parse(localStorage.getItem('messages')) || [];
重构后:
Sms.get_messages = function(){ return JSON.parse(localStorage.getItem('messages')) || []; }
通过return将这个数组的值返回给函数名Sms.get_messages();所以Sms.get_messages()就代表这个数组,可以通过调用它来实现数组的获取。
2.函数间可以相互调用
重构前:
var messages = JSON.parse(localStorage.getItem('messages')) || [] for (var i = 0;i <messages.length; i +=1 ){ if(messages[i].phone == Sms.sign_up_phone(json_message) ){ localStorage.current_phone = messages[i].phone; } }
这样就将对应的电话存储到本地库中,存储的类型是字符串型数据。
由于for循环再嵌套上if很容易出现逻辑错误,所以将for循环改成underscore中的_.find方法。_.find方法替代for循环,根据return中的判断条件寻找数组中的符合条件的数据,messages代表要遍历的数组,function中的message就相当与前面的messages,只是为了理解方便。这样就可以理解为在messages中遍历每一个message。
与之对应的_.find方法
var messages = JSON.parse(localStorage.getItem('messages')) || []; Sms.is_same_sign_message = function(json_message){ return _.find(messages, function (message) { return message.phone == Sms.sign_up_phone(json_message) }) }
重构后:
Sms.is_same_sign_message = function(json_message){ return _.find(Sms.get_messages(), function (message) { return message.phone == Sms.sign_up_phone(json_message) }) }
这个函数中messages用Sms.get_messages()代替,其他用到这个数组的函数也可通过Sms.get_messages()调用来实现代码复用。
3.underscore用法
之前用for循环来来存储messages中与localStorage.activities_sign相同的元素,如果判断条件增加会使代码过于庞大而且逻辑复杂
for(var i=0;i<messages.length;i++){ if(messages[i].status == localStorage.current_status){ localStorage.current = messages[i]; } }
重构后:
Activity.is_current_name = function(){ return _.find(messages,function(message){ return message.status == localStorage.current_status }) }
_.find后的messages是要处理的数组名,function(message)中的message代表messages中的每个元素,相当于messages,function(message){}函数体中的return后是判断条件。_.find是查找messages中符合判断条件的元素,而且是查找到第一个符合条件的内容就返回而不再向下执行。_.filter是查找所有符合条件的元素并存储,若要取此数组只需调用此方法名。
提供一个学习underscore的网站:http://www.css88.com/doc/underscore/;
相关推荐
改善既有的代码重构(ppt),改善既有的代码重构,改善既有的代码重构PPT
代码重构 重构与模式
《代码重构》书籍的中文版电子版,软件开发者必读书籍。 重构——改善既有代码的设计(中文版)
java代码重构经验分享
高仿微信,iOSAppTemplate代码重构
代码重构 (C# & ASP.NET) 英文原版 && 源代码
代码重构技术
在《代码重构(C#&ASP.NET版)》中首次提供了在c#和asp.net中进行重构的专业方法,您将学习如何运用重构技术管理和修改代码。此外,还将学习如何从头开始构建原型应用程序,然后利用重构技术将原型转换为正确设计的、...
代码重构的指导书籍以及设计模式的一些简介
重构_改善既有代码的设计这本电子书介绍了代码重构的知识,为什么要重构,以及是如何重构等
java代码重构
讲述了java代码的重构总结 规范代码,有必要好好学习
优秀的程序员,应该懂得代码重构,写出更加优美和逻辑清晰的代码
重构技巧: 书中介绍了一系列将 Java 代码重构为 Kotlin 的技巧和方法,包括语法转换、代码结构调整、使用 Kotlin 的特性等方面。 实用示例: 书中通过丰富的实例和案例来演示如何进行代码重构,包括常见的 Java ...
软件设计是演进过程,而重构是设计演进的基本方法。重构是指不改变软件行为的前提下,修改程序内部结构。重构说简单,做不简单。首先,需要知道代码的好坏,即代码异味,设计原则等。其次,需要以自动测试作为保障。
Java代码重构示例 Java代码重构示例 Java代码重构示例 Java代码重构示例 Java代码重构示例 Java代码重构示例 Java代码重构示例
Java 代码 重构 实例 指南 ,欢迎下载
总共43页,内含对代码重构的详细介绍,还有很多的例子介绍,花很短时间就能看完