第七计:串联函数调用
当一个类的大部分函数被较为频繁地调用,并且包含连续性地调用,那么可以考虑为这个类中那些没有返回值的函数增加返回值,即返回对象本身,这样就可以串联函数调用,使用起来较为方便,举个例子:
// 表示用户的类
public class User{
public void setName(String name);
public void setAge(int age);
public void setPhoneNumber(int phoneNumber);
}
下面是不使用串联函数调用的情况:
User user = new User();
user.setName("West_Link");
user.setAge(3);
user.setPhoneNumber(122333);
下面是使用串联函数调用的情况:
User user = new User().setName("West_Link").setAge(3).setPhoneNumber(123333);
只需要为那些函数增加一个User对象的返回值即可,如下:
public User setName(String name){
this.name = name;
return this;
}
第八计:临时变量在用到时才声明
很多人喜欢在函数的开头把所有要用到的临时变量都声明了,我认为这种方式有以下几个缺点:
1、不利于代码的阅读,需要经常在变量的使用处和变量的声明处跳转,不方便。
2、容易造成资源的浪费,因为有些对象的初始化是比较耗费资源的,而函数可能在用到该对象之前返回。
3、不利于函数的拆分。
所以,我们应该尽可能降低临时变量的作用域,那样它能“捣乱“的范围就被缩至最小了。
第九计:保持类的公有函数粒度最小化
一个类的公有函数不应该过多,那样会使类变得臃肿、不易使用,我认为最佳状态是绝大部分公有函数不能被拆分,也就是说,不存在那些通过其他公有函数也能达到目的的函数,例如下面的类:
public class StringArray{
// 获取数组的大小
public int getSize();
// 判断数组是否为空
public boolean isEmpty();
// 将数据添加到数组的某个索引
public void add(String value,int index);
// 将数据添加到数组的末尾
public void addToLast(String value);
// 将数据添加到数组的起始位置
public void addToFirst(String value);
}
StringArray其实只需要两个公有函数即可,即getSize和add,因为isEmpty可以通过getSize来达到相同的目的:getSize() == 0。类似地,addToLast、addToFirst也可以通过add来实现。不过,如果类的公有函数比较少,而且类似isEmpty类似的需求经常被用到,那么保留这些公有函数还是值得的。
第十计:将可访问性降至最低
面向对象中的封装性使得我们可以隐藏类或者接口的实现细节,所以,为了让程序更易维护、接口或者类的使用更加简单,我们应该尽可能降低成员变量或者成员函数的可访问性,辅助函数一定要声明为私有的,确保只将接口函数声明为公有的,如果该辅助函数可能会被子类用到,则可以声明为保护的。辅助类也应声明为私有的,对于成员变量则一定要声明为私有的,只提供必要的set或者get函数。总之,当我们增加新的类、成员变量、成员函数时,一定要合理地设置可访问性,暴露给外界的越少越好。
第十一计:合并条件减少嵌套
条件判定如果嵌套的太多会大大降低程序的可读性,很容易滋生Bug,例如:
if(a){
if(b || c){
if(d){
...
}
}
}
可以合并成:
if(a && (b || c) && d){
...
}
第十二计:循环中早用continue减少条件嵌套
除了通过合并条件来减少嵌套层次外,在for或者while循环中,可以用continue来减少条件嵌套,例如:
for(int i=0; i<100;i++){
if(a){
if(b){
if(c){
...
}
}
}
}
这段代码的嵌套深度是4,使用continue可以大大减少嵌套层次:
for(int i=0; i<100;i++){
if(!a)
continue;
if(!b)
continue;
if(!c)
continue;
...
}
ref:http://blog.csdn.net/m13666368773/article/details/7472209
分享到:
相关推荐
以上是重构的其中十计,重构的目的是提升代码质量,使其更易读、易维护。通过持续不断地进行重构,我们可以逐步优化代码,减少潜在的错误,同时提高开发效率。记住,重构并不总是意味着大规模的改动,有时候一个小的...
【代码重构36计】是关于提升代码质量与可维护性的策略集合,主要针对C++编程语言。重构的核心目标是使程序更容易理解、更便于维护,并优化其结构。以下是其中的五项重构策略: 1. **参数列表对象化**: 当函数的...
重构是软件开发中的一种重要实践,旨在改善代码的结构,提高可读性和可维护性,同时保持原有功能。以下是对给定文档中提及的重构策略的详细解释: ### 参数列表对象化 当一个函数或方法的参数过多时,可以考虑创建...
"藏经阁-研发效能提升和敏捷实施36计.pdf" 本文档主要介绍了阿里巴巴的研发效能提升和敏捷实施36计,旨在提高研发效率和敏捷性。下面是本文档的知识点总结: 一、流动效率和研发效率提升 * 流动效率:响应能力、...
### 提高PHP代码质量36计之精要 在软件工程领域,代码质量的重要性不言而喻,尤其对于广泛使用的编程语言PHP而言,提升代码质量不仅能够增强程序的稳定性、可维护性和安全性,还能显著提高开发效率。以下,我们将...
提高PHP代码质量的36计,是一份针对PHP开发者提升代码质量和编程效率的指南,尤其适合初学者和希望精进技能的中级开发者。本文将详细解读其中的几个关键点,帮助开发者理解并实践这些规范。 ### 1. 避免使用相对...
重构,其实很简单,它的目的就是让程序变得更容易被理解,更具有可维护性,结构更合理
**12. 通断** - **定义:**电机控制中的一种基本动作,即控制电机的启动与停止。 - **方法:**可以通过改变供电状态来实现。 **13. 换向器** - **定义:**用于刷式直流电机中,确保电流方向正确切换的部件。 - **...
3.6.2 连接所有元素 36 3.6.3 测试 39 3.7 小结 39 第4章 更丰富的用户界面 40 4.1 满是控件的屏幕 40 4.2 活动、静态和被动控件 42 4.3 创建应用程序 42 4.3.1 导入图像 42 4.3.2 实现图像视图和文本字段 43 4.3.3...