簡體   English   中英

內部類與頂級類與指針(多少行太多)?

[英]Inner class vs Top Level class with Pointer (How many lines are too many)?

我應該害怕將頂級類移到內部類,因為這會使一個類文件長1.5k +行和50+個方法嗎?

我正在將JavaFX用於寵物項目。 我是一名新開發人員(大學新生)。

我有不同的類來管理UI的不同部分。 一個用於繪制游戲板,一對用於在側欄選項卡中邏輯,一個用於菜單欄等。每個類的一個副本由主ViewController啟動。

我發現這很容易管理。 問題是我必須向每個參數傳遞一堆參數(從scenebuilder創建的不同UI元素)。 這聽起來像是使用內部類的原因,對嗎? 包含這些元素的“輔助”對象會更好嗎? 添加新的變量UI元素變得很麻煩,這似乎是一個不好的信號。

TLDR; 如何在大型項目上管理大型ViewController?

創建1.5k +行和50個方法長的任何類都是面向對象的反模式,稱為God對象

通常,也避免使用大量參數是使用內部類的普遍接受的理由。 您可以在下面鏈接的頁面中查看Oracle指南。 https://docs.oracle.com/javase/tutorial/java/javaOO/whentouse.html

通常,避免必須傳遞大量參數的最佳方法是基本上創建一些類來封裝參數,並改為傳遞這些類的實例。

我不知道您正在處理的問題的具體信息,但是從您的問題來看,您似乎實際上正在解決依賴項注入問題。

您所有的班級都相互依賴。 例如,助手可能依賴於不同的特定UI元素。 現在,您正在手工連接那些依賴項(實例化類時,將所有依賴項作為構造函數參數傳遞)。

分步進行依賴注入。 如果您使用的是Android,則標准為Dagger;如果您使用的是服務器,則大多數人仍會使用Guice。 這里的基本思想是,您無需手工將每個類的所有依賴關系連接在一起,而是創建一個構造函數並聲明您的decency,其余的將由框架來完成。

例如:

class A {
   @Inject public A(B b, C c) { ... }
}

class B {
   @Inject public B() { ... }
}

class C {
   @Inject public B() { ... }
}

當您向框架詢問A的新實例時,它將知道先獲取B和C,然后將它們傳遞給構造函數。

暫無
暫無

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

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