首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

复建《Split Loop(分解循环)》

2012-11-11 
重构《Split Loop(分解循环)》WHAT在循环中,一次循环做了两件事情,将循环分解,重复这个循环,每次只做一件事

重构《Split Loop(分解循环)》
WHAT

在循环中,一次循环做了两件事情,将循环分解,重复这个循环,每次只做一件事情

?

潜在问题:性能问题,如果遇到性能问题,先让代码清晰可读,让你更快找到性能优化点,再做优化

?

本次重构涉及的基本重构较多,主要有:

    Split Loop(分解循环)Extract Method(提炼方法)Inline Temp(内联临时变量)Replace Temp With Query(用查询函数代替临时变量)Rename Temp(重命名临时变量)Split Temporary Variable(分解临时变量)
HOW重构前的代码清单

Student类是一个哑对象,表示一个学生,有年龄(age)和成绩(grade)两个属性

?

package split.loop;public class SomeClass {private Student[] students;void printValues() {System.out.println(averageAge());System.out.println(totalGrade());}private double averageAge() {double result = 0; // 平均年龄for (int i = 0; i < students.length; i++) {result += students[i].getAge();}return result / students.length;}private int totalGrade() {int result = 0; // 总成绩for (int i = 0; i < students.length; i++) {result += students[i].getGrade();}return result;}}
??这时,代码已经相当清晰了,我们不需要看方法注释,以及方法内部实现,就可以知道printValues这个方法做了哪些事情,这就是重构的魅力,小步慢跑,一步一前进,但是,最最重要的前提是:我们在重构之前,必须有一个运行良好且速度较快的单元测试,让我们在测试、编码、重构不断地切换角色,更换帽子总结

本重构虽然很简单,一些很小的改动,能够使代码可读性更强,更易维护,希望本实践对你有益,希望大家和我一起动手做重构,也希望你提出宝贵意见或反馈

热点排行