zoukankan      html  css  js  c++  java
  • 重新组织函数

    提炼函数(Extract Method)

    你有一段代码可以被组织在一起并独立出来,将代码放进一个独立函数中,并让函数名称解释该函数的用途。

    void printOwing(double amount) {  
        printBanner();  
          
        System.out.println("name: " + name);  
        System.out.println("amount: " + amount);  
    }  
    

    转换为:

    void printOwing(double amount) {  
        printBanner();  
      
        printDetails(amount);  
    }  
      
    void printDetails(double amount) {  
        System.out.println("name: " + name);  
        System.out.println("amount: " + amount);  
    } 
    

    当看见一个过长的函数或者一段需要注释才能让人理解用途的代码,就可以将这段代码放进一个独立的函数中。

    如果每个函数的粒度都很小,那么函数被复用的机会就更大;
    其次,这会使高层函数读起来就像一系列注释;
    再次,如果函数都是细粒度,那么函数的覆写也会更容易些。
    函数命名以它做什么来命名,而不是以它怎么做命名,关键在于函数名称和函数体之间的语义距离。
    即使想要提炼的代码非常简单,例如只有一条消息或一个函数调用,只要新函数的名称能够以更好的方式昭示代码意图,也应该提炼它。

    内联函数(Inline Method)

    一个函数的本体与名称同样清楚 易懂,在函数调用点插入函数本体,然后移除该函数。

    int getRating() {  
        return (moreThanFiveLateDeliveries()) ? 2 : 1;   
    }  
      
    boolean moreThanFiveDeliveries() {  
        return numberOfLateDeliveres > 5;  
    }  
    

    转换为:

    int getRating() {  
        return (numberOfLateDeliveries > 5) ? 2 : 1;  
    }  
    

    试着使用内联函数,可以找出那些有用的间接层,同时将那些无用的间接层去掉。

  • 相关阅读:
    安装maven报错及解决
    Servlet包导入
    理解SQL SERVER的逻辑读,预读和物理读以及索引
    第六章(函数)编程题二
    第六章(函数)编程题一
    第五章(使用对象) 编程题一
    第三章(循环) 编程题 4
    第四章(数组) 编程题 1
    第三章(循环) 编程题 3
    低功耗蓝牙 ATT/GATT/Service/Characteristic 规格解读
  • 原文地址:https://www.cnblogs.com/lujiango/p/7580780.html
Copyright © 2011-2022 走看看