簡體   English   中英

你如何用Java組織類源代碼?

[英]How do you organize class source code in Java?

到目前為止,我的平均類包含大約500行代碼和大約50種方法。 IDE是Eclipse,我在其中轉為“保存操作”,以便按字母順序排序方法,首先是公共方法,然后是私有方法。 要在代碼中找到任何特定方法,我使用“快速大綱”。 如果需要,“Open Call Hierarchy”顯示逐個調用的方法序列。

這種方法具有以下優點:

  • 我可以開始輸入新方法而不考慮將它放在代碼中的位置,因為在保存之后它將被Eclipse放置到適當的位置。
  • 我總是在代碼的上半部分找到公共方法(不必為它們搜索整個類)

但是有一些缺點:

當將大型方法重構為較小的方法時,我不太滿意新的私有方法被放置在代碼的不同部分,因此遵循代碼概念有點困難。 為了避免這種情況,我以一種奇怪的方式命名它們以使它們靠近每一個,例如:showPageFirst(),showPageSecond()而不是showFirstPage(),showSecondPage()。

可能有更好的方法嗎?

為其受眾群體組織代碼。 例如,庫中的類可能包含以下受眾:

  1. 需要有關公共方法如何工作的更多詳細信息的API客戶端。
  2. 想要找到相關方法進行小改動的維護者。
  3. 一個更嚴肅的維護者,他想要進行重大的重構或添加功能。

對於仔細閱讀源代碼的客戶,您需要介紹核心概念。 首先,我們有一個課程文檔評論,其中包括重要術語和用法示例的詞匯表。 然后我們將代碼與一個術語相關,然后是與另一個術語相關的代碼,然后是與第三個術語相關的代碼。

對於維護者來說,任何可能需要一起改變的方法都應該靠近。 公共方法及其私有幫助程序以及與之相關的任何常量只能一起顯示。

通過將類成員分組為單獨記錄的邏輯部分,可以幫助這兩組用戶。

例如,一個集合類可能有幾個主要是正交的問題,這些問題不容易分解成單獨的類,但可以分成不同的部分。

  1. 存取器
  2. 訪問器
  3. 迭代
  4. 序列化和toString
  5. 平等,可比性,哈希

那么,命名你的方法,以便在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM