2016-08-09 98 views
0

是否有標準的慣例或約定在哪裏聲明只在另一個方法內使用(或調用)的方法?爲了證明這種假設如下:關於如何組織方法的最佳做法?

public class MyClass{ 
    methodA(); 
    methodB(); 
    methodC(); 

    public void methodA(){ 
     methodA1(); 
     methodA2(); 
    } 
    public void methodB(){ 
     methodB1(); 
     methodB2(); 
    } 
    private void methodA1(){ 
     do something; 
    } 
    private void methodA2(){ 
     do something; 
    } 
} 

或者,有沒有作弄不同的方式,可以改善上述的可讀性?我已經閱讀了類似主題的其他問題,但他們沒有解決我在其他方法中使用的具體方法問題。您可以假設methodA,methodB和methodC對於特定任務具有邏輯和有意義的順序。我的問題是其他方法(methodA1,methodA2,..)在這個任務中沒有意義,它們僅在它們被調用的方法內部纔有意義。或者,我應該不打擾方向聲明的放置位置嗎?

+0

代理模式?先https://en.wikipedia.org/wiki/Proxy_pattern – Stefan

+1

公共方法,然後保護,然後私人。使它更容易閱讀。 – pecks

+0

在最近一項關於程序理解的研究中,結果表明答案可能是:任何一致的排序。 – Elazar

回答

1

方法應該以這樣的方式,讓他們念想不引起讀者需要跳躍的代碼太多

羅伯特·Ç·馬丁(又名叔叔的故事進行排序Bob)

這意味着什麼(簡而言之),就是你的methodA1,methodA2應該放在methodA(使用它們)之後。與methodB methodB1,methodB2一樣。我希望看到這樣的事情:

public class MyClass{ 
methodA(); 
methodB(); 
methodC(); 

public void methodA(){ 
    methodA1(); 
    methodA2(); 
} 

private void methodA1(){ 
    do something; 
} 
private void methodA2(){ 
    do something; 
} 

public void methodB(){ 
    methodB1(); 
    methodB2(); 
} 

public void methodB1(){ 

} 

public void methodB2(){ 

} 
} 

它也建議你把你的成員變量在頂部(因此不會根據訪問修飾符的位置決定)。

您可能想要檢查Bob叔叔的booksvideos以獲得一些關於編寫乾淨代碼的非常好的建議。

+0

您在methodA之前放置了methodA1和methodA2之前。 – Addis

+0

對不起@Addis錯字。我編輯了我的答案。 MethodA1和methodA2應放在methodA之後(即使用它們) – sestus

0

如果您只是使用文本編輯器來讀取和更改代碼,那麼考慮您聲明方法的順序可能是有意義的,但通常您會使用像Eclipse這樣的現代工具,它給你一個方法的概述,並允許你遵循調用層次結構,所以它們所在的位置並不重要。

最好集中精力使自己的代碼儘可能獨立和抽象,只用做一件事的方法,以及具有非常明確功能的類,並且不惜一切代價避免使用應該由另一個對象完成。

呵呵,寫出好評。這意味着解釋爲什麼而不是什麼你在做什麼。

0

如果只有一個函數調用一個方法,並且它只調用一次,則可以使用一個函數。

如果它多次調用它,請將它放在「父」函數之前,而不要在它們之間有任何換行符。如果可讀性會受到影響(例如的javadoc將得到搞砸了一千沒用的功能)考慮隱藏它們都放在私人用util_/internaluse_//ZZZ前綴或parentname_像methodA_methodA1

如果它是由幾個稱爲它的功能更多的是實用功能。所以對待它就是這樣。這些實用功能中的一些可以成爲實用類。

另外,我個人使用C++風格。所以會員,那麼A1,A2,A,B1,B2,B

相關問題