代码重构之内联函数

意图

- 内部代码和函数名称同样清晰易读,去除无用的间接层

示例

/**

 * 内联函数之前

 * Created by luo on 2017/4/18.

 */

public class InlineMethodBefore {

    private Integer _numberOfLateDeliveries ;

    int getRating(){

        return (moreThanFiveLateDliveries()) ? 2 : 1;

    }

    private boolean moreThanFiveLateDliveries() {

        return _numberOfLateDeliveries > 5;

    }

}

/**

 * 内联函数之后

 * Created by luo on 2017/4/18.

 */

public class InlineMethodAfter {

    private Integer _numberOfLateDeliveries ;

    int getRating(){

        return (_numberOfLateDeliveries > 5) ? 2 : 1;

    }

}
时间: 2024-12-26 18:19:28

代码重构之内联函数的相关文章

代码重构之内联临时变量

意图 - 有一个临时变量,只被一个简单表达式赋值一次,而它妨碍了其他重构手法 示例 /** * 内联临时变量之前 * Created by luo on 2017/4/19. */ public class InlineTempBefore { Order anOrder = new Order(); public boolean test() { double basePrice = anOrder.basePrice(); return basePrice > 10; } } /** * 内

代码重构(一):函数重构规则

重构是项目做到 一定程度后必然要做的事情.代码重构,可以改善既有的代码设计,增强既有工程的可扩充.可维护性.随着项目需求的不断迭代,需求的不断更新,我们在项目中 所写的代码也在时时刻刻的在变化之中.在一次新的需求中,你添加了某些功能模块,但这些功能模块有可能在下一次需求中不在适用.或者你因为需求迭代与变 更,使你原有的方法或者类变得臃肿,以及各个模块或者层次之间耦合度增加.此时,你要考虑重构了. 重构,在<重构,改善既有代码的设计>这本经典的书中给出了定义,大概就是:在不改变代码对外的表现的情

C/C++ 之内联函数

在C中可以使用#define提高执行效率,但是容易出错,而在C++ 支持函数内联,其目的亦是如此. (1)inline的工作原理: 对于任何内联函数,编译器在符号表里放入函数声明(包括名字,参数类型,返回值类型).如果编译器没有发现内联函数存在错误,那么该函数的代码也被放入符号表中.在调用一个内联函数时,编译器首先检查调用是否正确,比如进行类型安全检查,进行类型转换等.如果正确,内涵函数的代码将会直接替换函数调用,于是省去了函数调用的开销. 这个与#define是不同的,因为#define不能进

Java之内联函数

以前用过C++,知道它里面有一个内联函数这个概念,一般情况用inline关键字修饰,在C++定义类时,那种写中Class定义里面的函数,也被编译器当做内联函数处理. 说了这么多,还没说什么是内联函数.所谓内联函数就是指函数在被调用的地方直接展开,编译器在调用时不用像一般函数那样,参数压栈,返回时参数出栈以及资源释放等,这样提高了程序执行速度. 现在该说Java了,对应Java语言中也有一个关键字final来指明那个函数是内联的,例: Java代码   public final void doSo

C++学习之内联函数

内联函数与宏区别 需要在函数前加上关键字inline,但inline是建议性关键字,当请求将函数作为内联函数时,编译器并不一定会满足这种要求.内联函数尽量避免函数体过长.含有循环.递归. 内联函数的优势在于做参数类型检查,而宏定义不会,宏只是简单的文本替换. 1.宏不能访问对象的私有成员.2.宏的定义很容易产生二意性. 内联函数和宏的区别在于,宏是由预处理器对宏进行替代,而内联函数是通过编译器控制来实现的.而且内联函数是真正的函数,只是在需要用到的时候,内联函数像宏一样的展开,所以取消了函数的参

C++之内联函数与constexpr

inline 函数 规模小,流程直接且频繁调用 cout<<shortString(s1,s2)<<endl; = cout<<(s1.size()<s2.size()?s1:s2)<<endl; constexpr函数是指能用于常量表达式的函数.函数的返类型及所有形参的类型都得是字面值类型,而且函数体中必须有一条return语句:

代码重构(二):类重构规则(Swift版)

在上篇博客<代码重构(一):函数重构规则(Swift版)>中,详细的介绍了函数的重构规则,其中主要包括:Extract Method, Inline Method, Inline Temp, Replace Temp with Query, Introduce Explaining Variable, Split Temporary Variable, Remove Assignments to Parameters, Replace Method with Method Object等.关于

C++ 内联函数

1.定义: 被调用函数的函数体代码直接插入到该函数被调用处, 而不是通过call语句进行. 2.方式: (1).类的定义体外: 当在类的定义体外时,需要在该成员函数的定义前面加“inline”关键字,显式地告诉编译器该函数在调用时需要“内联”处理,如: class Person { public: string GetName(); private:   string  name; }; inline string GetName() {         return name; } (2).类

内联函数 inline 漫谈

内联函数存在的结论是: 引入内联函数是为了解决函数调用效率的问题 由于函数之间的调用,会从一个内存地址调到另外一个内存地址,当函数调用完毕之后还会返回原来函数执行的地址.函数调用会有一定的时间开销,引入内联函数就是为了解决这一问题. 不用inline修饰的函数, 汇编时会出现 call 指令.调用call指令就是就需要: (1)将下一条指令的所在地址入栈 (2)并将子程序的起始地址送入PC(于是CPU的下一条指令就会转去执行子程序). 原因 因为调用函数实际上将程序执行顺序转移到函数所存放在内存