2017-03-16 123 views
1

我有類似:獲取和設置鍵值屬性

Properties props = new Properties(); 
    // This type of key-value property is in several code lines 
    props.put("mail.transport.protocol", settings.getSmtpProtocol()); 

在我的代碼,道具在幾個地方進行訪問。每次,我需要通過其字符串鍵訪問某個屬性。最近,我在其中一個關鍵字符串中做了一個小小的代碼更改,而且這個關鍵字不匹配造成了嚴重的後果。

假設在不久的將來它會增加大小和複雜度,在我的代碼庫中避免這類問題的正確設計應該是什麼?下面是我能想到的,但不知道什麼應該是最好的方式選擇:

  1. 代替書寫鍵裸串像「mail.transport.protocol」,「mail.smtp.host」,「 mail.smtp.port「在代碼中的幾個地方,讓他們存儲在一個類中?並且單元測試是否將相應的類變量添加到屬性中?

  2. 我應該重構道具到另一個類[只有我需要的屬性] alltogether,給定的道具已經在許多代碼行中獲取/設置了嗎?

  3. 有關鍵字符串,因爲它是在道具和獲得「鍵」作爲單位測試?但是,密鑰會以裸字符串的形式多次寫入。

回答

0

創建一個單獨的屬性文件。說mail.properties。

該文件保存所有鍵值對。將來如果有人想要更改任何屬性,他可以更新此屬性文件而不是更改Java類。

然後創建一個Java類來加載所有這些屬性,併爲該類中的每個屬性創建公共靜態常量。

使用上述常量,你想要使用它們。

+0

我的設計實際上涉及保存屬性字符串和屬性,如你所說。謝謝,我的代碼現在看起來更乾淨。 –