簡體   English   中英

非公class放在哪里?

[英]Where to put non-public class?

假設我有一個 Java class A ,它需要一個助手 class B 該助手 class 僅用於A ,沒有其他用途。 此外, B不需要以任何方式使用A (不要調用方法或訪問字段)。

所以,問題是:把B放在哪里?

有以下選項:

  1. Static 嵌套 class。 在我看來,它只是讓代碼變得不那么清晰(更多的縮進等等)。

     public class A {... private static class B {... } }
  2. 同源中的非公開 class。 我喜歡這個選項。

     public class A {... } class B {... }
  3. 非公開 class 在單獨的源。 不過,看起來這個選項有一點開銷。

     // A.java public class A {... } // B.java class B {... }

目前,我更喜歡第二種選擇。 你對此有什么想法? 最佳做法是什么? 有沒有權威的消息來源?

我強烈投票支持選項(1)。 The idea is, that class B is only needed by class A and option (1) is the only alternative that clearly expresses that intention: class B is part of class A .

幫助嗎?

沒有嚴重的缺點,但至少可以找出一些缺點,包括:

  • 難以理解——尤其是對於沒有經驗的程序員,他們可能會發現難以編碼、增強和維護。
  • 更多的類 - 它肯定會增加應用程序使用的類的總數。 For every class loaded into the memory, JVM creates an object of type Class for it. 可能還有一些其他例行任務,JVM 可能需要為所有額外的類執行。 如果應用程序使用多個嵌套/內部類(可能是由於設計不佳),這可能會導致性能稍慢。
  • 工具/IDE 的有限支持 - 嵌套類不享有與大多數工具和 IDE 中的頂級類相同的支持。 這有時可能會激怒開發人員。

您可以在 A 中使用嵌套的 static class。更好的封裝,因為嵌套的 class 是一種僅在一個地方使用的邏輯分組類的方法。 您的助手 class 是否僅包含字段?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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