簡體   English   中英

需要知道在這種情況下哪種變量處理方法更有效

[英]Need to know which method of variable handling would be more efficient in this case

現在我有一個配置閱讀器 class ,它通過一個文本配置文件並將它找到的值添加到我之前聲明的變量中。 然后將所有這些變量傳遞給構造函數。 不用說,它很亂,看起來像這樣:

String buttonText = "";
String buttonPassword = ""; 
String buttonAction = ""; 
String buttonFont = "";
int buttonPosX = 0;
int buttonPosY = 0;
int buttonWidth = 0;
int buttonHeight = 0;
int buttonFontSize = 0;
int buttonFontColor = 0;
int buttonBgColor = 0;
int buttonLayoutPosition = 0;

// Gathering information here ...

parent.addButton(buttonText, buttonPassword, buttonPosX, buttonPosY, buttonLayoutPosition, buttonWidth, buttonHeight, buttonAction, buttonFont, buttonFontSize, buttonFontColor, buttonBgColor);

有一個更好的方法嗎? 我聽說過地圖,這是一個使用地圖的好地方嗎? 我想牢記效率,還要考慮代碼的可讀性和維護性。

您可以創建一個將所有這些值作為字段的ButtonConfig class。 然后您只需將單個 object 傳遞給 c'tor。 根據整個程序的組織,將初始化所有配置參數的代碼移動到配置 class 本身可能是有意義的。

這是一個舊線程的鏈接,但它准確地解釋了我會做什么,我會使用構建器模式: Managing constructors with many parameters in Java

如果您使用 Eclipse 您可以在上下文菜單中選擇

->重構->提取 class

創建數據 object。 此數據 object 只需寫入一次,並將作為整個 object 傳遞給構造函數。

這是 map 的一個有價值的替代方案,因為您不會丟失類型驗證和 javadocs 等。

您的代碼將如下所示:

public static class Data
{
  String buttonText = "";
  String buttonPassword = ""; 
  String buttonAction = ""; 
  String buttonFont = "";
  int buttonPosX = 0;
  ...
}

...
private Data data = new Data();
...
parent.addButton(data);
...

Eclipse 為您執行此操作的對話框如下所示:

提取類

(順便說一下,這里將String初始化為“”是沒有意義的。)

您可能想要使用HashMap構造一個MapStringObject ,然后將其傳入。這是傳遞任意鍵值的簡單方法。 A Properties object 也可能是合適的,因為 class 可以從文件中讀取鍵值對,盡管所有都被視為文本。

它有效率嗎? 那里真的沒有太多開銷,不。 我不認為這是一個緊密的循環,所以在你證明它太慢之前,不要擔心。

暫無
暫無

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

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