项目重构&性能优化

重构的目标:

1.持续偏纠和改进软件设计 

2.提升项目整体性能,优化代码结构

3.使代码更被其他人所理解 

4.帮助发现隐藏的代码缺陷 

5.从长远来看,有助于提高编程效率,增加项目进度

 

 

重构函数:

1.减少临时变量。例如:if (are > 1000) { //XXXXX } //改为 if (self.are > 1000) { //XXXXX }

2.

重构类:

//1.搬移方法 //把方法放在最适合的地方

//2.移字段 //每个字段、变量应该放到自己的类中,不能随便放,不属于这个类的字段移走

//3.提炼一个新类 //将原类的一些属性和方法可否有共同点,能否做出一个新类。降低代码耦合 //如一个person类,有number、totalCosts(话费)、name属性,可新建一个TelephoneNumber类,number、totalCosts属性放入里面。

//4.内容移动 //子类都有相同的属性或方法,可将这属性、方法移到父类;若只是一部分,可创建一个子类,写入属性、方法。需要的类的基础此类。

//5.提炼接口 //把某些特殊功能的方法写入接口中,方便其它类调用。

重新组织数据:

 

//1.封装字段 //写属性的get方法,方便子类改变字段结果,提高扩展性 [self interg];

//2.对象替代数值 //比如:原来某类只需要名字属性,后来又需要性别、年龄,可以新增person类。

//3.传参数时,最好将参数变成对象,数据多时,很方便

if-else:

1.合并条件表达式:如果有一系列条件测试都得到相同结果,将这些结果测试合并为一个条件表达式

2.改为平行关系,而非包含关系;如果if-else嵌套没有关联性,直接提取到第一层;尽量减少临时变量改用return直接返回

double getPayAmount(){
    double result;
    if(_isDead) {
        result = deadAmount();
    }else{
        if(_isSeparated){
            result = separatedAmount();
        }
        else{
            if(_isRetired){
                result = retiredAmount();
            else{
                result = normalPayAmount();
            }
        }
    }
    return result;

改为:

double getPayAmount(){
    if(_isDead) 
        return deadAmount();
 
    if(_isSeparated)
        return separatedAmount();
 
    if(_isRetired)
        return retiredAmount();
 
    return normalPayAmount();

3.把不同状态的操作封装成函数

重构前:

double getPayAmount(){
    Object obj = getObj();
    double money = 0;
    if (obj.getType == 1) {
        ObjectA objA = obj.getObjectA();
        money = objA.getMoney()*obj.getNormalMoneryA();
    }
    else if (obj.getType == 2) {
        ObjectB objB = obj.getObjectB();
        money = objB.getMoney()*obj.getNormalMoneryB()+1000;
    }
}
重构后:

double getPayAmount(){
    Object obj = getObj();
    if (obj.getType == 1) {
        return getType1Money(obj);
    }
    else if (obj.getType == 2) {
        return getType2Money(obj);
    }
}
 
double getType1Money(Object obj){
    ObjectA objA = obj.getObjectA();
    return objA.getMoney()*obj.getNormalMoneryA();
}
 
double getType2Money(Object obj){
    ObjectB objB = obj.getObjectB();
    return objB.getMoney()*obj.getNormalMoneryB()+1000;

4.

if-else总结:

尽可能地维持正常流程代码在最外层,保持主干流程是正常核心流程

为维持这个原则:合并条件表达式可以有效地减少if语句数目;减少嵌套能减少深层次逻辑;

异常条件先退出自然而然主干流程就是正常流程。

针对状态处理型重构方法有两种:一种是把不同状态的操作封装成函数,简短if-else内代码行数;另一种是利用面向对象多态特性直接干掉了条件判断。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值