[英]How do you organize class source code in Java?
到目前為止,我的平均類包含大約500行代碼和大約50種方法。 IDE是Eclipse,我在其中轉為“保存操作”,以便按字母順序排序方法,首先是公共方法,然后是私有方法。 要在代碼中找到任何特定方法,我使用“快速大綱”。 如果需要,“Open Call Hierarchy”顯示逐個調用的方法序列。
這種方法具有以下優點:
但是有一些缺點:
當將大型方法重構為較小的方法時,我不太滿意新的私有方法被放置在代碼的不同部分,因此遵循代碼概念有點困難。 為了避免這種情況,我以一種奇怪的方式命名它們以使它們靠近每一個,例如:showPageFirst(),showPageSecond()而不是showFirstPage(),showSecondPage()。
可能有更好的方法嗎?
為其受眾群體組織代碼。 例如,庫中的類可能包含以下受眾:
對於仔細閱讀源代碼的客戶,您需要介紹核心概念。 首先,我們有一個課程文檔評論,其中包括重要術語和用法示例的詞匯表。 然后我們將代碼與一個術語相關,然后是與另一個術語相關的代碼,然后是與第三個術語相關的代碼。
對於維護者來說,任何可能需要一起改變的方法都應該靠近。 公共方法及其私有幫助程序以及與之相關的任何常量只能一起顯示。
通過將類成員分組為單獨記錄的邏輯部分,可以幫助這兩組用戶。
例如,一個集合類可能有幾個主要是正交的問題,這些問題不容易分解成單獨的類,但可以分成不同的部分。
那么,命名你的方法,以便在IDE中更容易發現它們真的不好。 他們的名字應該反映他們的所作所為,僅此而已。
作為對您的問題的回答,可能最好的做法是將您的類分成多個類,並隔離在每個類中都有共同點的方法組。 例如,如果你有
public void largeMethodThatDoesSomething() {
//do A
//do B
//do C
}
然后你重構了這樣:
public void largeMethodThatDoesSomething() {
doA();
doB();
doC();
}
private void doA() {};
private void doB() {};
private void doC() {};
您可以創建一個名為SomethingDoer的類,您可以在其中放置所有這4個元音,然后在原始類中使用該類的實例。
不要擔心在類中對您的方法進行物理排序,如果您看不到它只是使用Ctrl-O並開始鍵入方法名稱,您將直接跳轉到它。
具有自描述方法名稱導致更可維護的代碼,而不是人為地命名它們以使它們按字母順序排列。
提示:了解快捷鍵,您將提高工作效率
組織你描述的方式聽起來比我迄今為止看到的99%的Java代碼要好。 但是,另一方面,請確保您的課程不會增長太多,方法也不是很大。
類通常應小於1000行,方法小於150。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.