2016-08-01 100 views
0

大部分的時間,我定義爲具有相同的變量名和值的Java定義字符串常量

public static final String PROCESS_ID ="PROCESS_ID"; 
public static final String CONTRACT_ID ="CONTRACT_ID"; 

//It ends up doing lot like this 
public static final String VARIABLE_NAME ="VARIABLE_NAME"; 
public static final String OTHER_NAME ="OTHER_NAME"; 

有什麼好的做法擺脫呢? 代碼審查總是說:「不硬編碼,使用常量」

是枚舉更好的辦法?

+1

爲什麼不使用'final'? – Li357

+0

使這些成爲枚舉的兩個問題:1)你必須明確地轉換爲一個'String'來使用它們在你當前使用'String'的地方; 2)你可能會在相同的枚舉中得到無關的「常量」;或許多枚舉。 –

+0

@AndyTurner,它在整個項目中定義這種類型的字符串看起來不錯。尋找任何替代方法來做到這一點。 – devv

回答

0

一個更好的做法是:

public static final ContractualInfo CONTRACT = new ContractualInfo(0, "CONTRACT_ID"); 

public static final ContractualInfo PROCESS = new ContractualInfo(1, "PROCESS_ID"); 
+0

你能解釋爲什麼你認爲這樣更好嗎? –

+0

這取決於你的用例(你爲什麼這麼做)。 但從一個普通的點,如果你這樣做: '新myWorker(合同)' 優於 '新myWorker( 「CONTRACT_ID」)' 只是因爲你可以做這樣的事情 '新的myWorker(「WHATEVERIWANT」)' 您正在使用您的課程的任何人只會提供對您班級有意義的數據。 –

0

這樣做可以讓您和未來的開發一個簡單的地方變化的東西,可以在應用程序的多個領域中使用。

例如,在DAO表名。如果在常量中定義表名,則意味着對錶名的更改只需要一次更改,而不是在多個位置更新表名。

有什麼好的做法擺脫呢?

檢查公司的編碼風格的指導方針,並按照他們想要的東西。如果您只是自己編寫代碼,請決定自己的指導方針並嘗試一致地遵循它們。

是枚舉更好的辦法?

它可以是。如果你需要在任何列表中處理這些常量,或者每個常量都有其他相關的常量,那麼枚舉可能是合適的。再次,請查閱您的編碼準則或編寫一些編碼準則。