重构, 即推翻重写. 这个名词相比对大多数程序员来说都不是愉快的. 但是这本重构 - 改善既有代码的设计却告诉我们, 重构有他的必要性. 也正如书封面写的那样, 掌握重构, 是普通程序员进阶到编程高手必须修炼的秘籍.
为啥要重构
先来解释一下何为重构:"重构就是对软件内部结构的一种调整, 目的是不改变软件可观察行为的前提下, 提高其可理解性, 降低其可修改成本." 太专业的解释了. 我下个通俗的定义吧:"重构是优化代码结构, 使其阅读性更好, 扩展性更强的一种高级技术".
软件开发中, 随着功能的加入, 程序将慢慢失去原来的结构. 有些人贸然加入功能的实现代码, 但却没有理解原来程序的结构和考虑代码的扩展性, 程序的可读性也非常低, 随着代码数量越来越多, 如果不进行重构的话, 程序就会越来越难以维护, 导致最后放弃这个程序. 我们需要重构让程序避免这样的结果.
我觉得本书中有句话特别好 "程序是首先写给人看的, 其次才是写给机器看", 我们写程序不可能刚开始就会有这样很好的结构, 在写的过程中我们需要对代码进行重构让其走上这样的道路, 代码越来越能看的懂, 将来接手维护这个程序的人也会上手更快.
多写测试
本书作者提倡大家多谢测试代码, 每写完一个功能或做重构后就进行单元测试, 总之多写测试代码, 多测试自己的代码总是会有好处的.
重构函数
这里只举了几个例子
重复代码
这种情况应该很多人都遇到过, 编程中不要有大量的重复代码, 解决办法就是去提炼到一个单独的函数中.
- void A() {
- .....
- System.out.println("name" + _name);
- }
- void B() {
- .....
- System.out.println("name" + _name);
- }
更改为
- void A() { .... }
- void B() { .... }
- void printName(String name) {
- System.out.println("name" + name);
- }
内联临时变量
如果你对一个变量只引用了一次, 那就不妨对他进行一次重构.
- int basePrice = order.basePrice();
- return (basePrice> 100);
更改为
return (order.basePrice()> 1000);
尽量去掉临时变量
临时变量多了会难以维护, 所以尽量去掉所使用的临时变量.
- int area = _length * _width;
- if (area> 1000)
- return area * 5;
- else
- return area *4;
更改为
- if (area()> 1000)
- return area() * 5;
- else
- return area() *4;
- int area() {
- return _length * _width;
- }
来源: http://www.bubuko.com/infodetail-2625987.html