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;  
    }  
    

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

  • 相关阅读:
    非凸问题寻优
    非凸问题寻优
    函数的微分表
    函数的微分表
    图形的认识(curve,surface,hypersurface)
    几种Java写webservice的比较
    C#利用lambda在函数中创建内部函数
    uva 387 A Puzzling Problem (回溯)
    HDU 4336 Card Collector 数学期望(容斥原理)
    【ArcGIS 10.2新特性】Portal for ArcGIS新特性
  • 原文地址:https://www.cnblogs.com/lujiango/p/7580780.html
Copyright © 2011-2022 走看看