2016-06-16 34 views
0

在應用程序開發中,我經常需要使用'Constants'和'Enums'。就我使用策略而言,我將所有'Constants'保存在一個名爲'Constants'的獨立類中,但我不確定是否應該保留所有使用'常量'的單獨類中的枚舉?或者我應該在需要的那些類中保留枚舉?或者我也應該將Contains類中的Enums保留爲'static'。我的問題是保留所有常量和枚舉的正確位置是什麼。保持常量和枚舉的正確位置是什麼?

+0

你想要什麼。:-) – Nabin

+0

爲什麼下來投票:( –

回答

2

我不認爲這裏有一條規則,我通常會盡量在我使用它們的地方保持不變的值。嘗試modularize您的代碼,以便當您移動它的一個塊時,執行特定操作的類,則不需要進入常量類並複製該模塊使用的N個常量。

如果我用包額外常量我最終將執行getExtra(...)調用

如果我使用共享偏好鍵的活動再繼續,我還讓他們爲常量,並將它們設置在Activity或類中,或者將其設置爲共享首選項中的值。

對於其他類型的常量,也嘗試使用build.gradle文件,你將它們放在一個地方。

例如

buildConfigField "String", "SUPPORT_EMAIL", '"[email protected]"'

,你會訪問他們作爲BuildConfig.SUPPORT_EMAIL

甚至資源值,如: resValue "string", "branch_io_key", "key_live_xxxxx"

您訪問它們像一個正常的字符串資源R.string.branch_io_key

對於枚舉:再次嘗試儘量保持你的邏輯在一個特定的p ackage,作爲「模塊」。如果,例如,創建一個自定義View其中包含無論是在後臺內置的動畫,你比如,對於不同類型的動畫爲View枚舉執行,您可以:

  1. 有一個包某處com.yourapp.ui.customviews.animatedView,你必須自定義視圖類,也枚舉兩者作爲一個單獨的文件
  2. 具有自定義視圖類

裏面你枚舉......所以當你重用視圖在另一個項目中,您只需複製整個軟件包或只是視圖類,你會確保你已經複製了與該類有關的所有東西。

最後一件事:如果您在使用字符串的,比方說,對話,和你有一些通用的文本,如「OK」,是」,‘否’,‘取消’,‘成功’, 「沒有可用的互聯網連接」等,並且你已經將它們翻譯成X數種語言,試着將它們保存在一個單獨的.xml文件中,這樣你就可以輕鬆地重用文本值,只需複製這些字符串文件在您的新項目,而不是期待通過長.xml文件,並提取屬於該對話框中的字符串,並將其移動到新的文件。

所以要結論,儘量保持你的代碼模塊儘可能多儘可能把所有東西都放在「內」,保持類似的東西她的。

至少這是我個人對常量的方法,到目前爲止還沒有問題。

+0

我擔心你的最後一點,就像你所說的「對於字符串是,不要試圖保留單獨的xml文件」。這是什麼意思?我從你那裏得到的是保持這些字符串不是字符串文件,我應該用任何名稱制作單獨的xml文件? –

+0

是的。因此,例如我在我的應用程序中使用對話框,並且這些對話框通常具有相同的文本值,如yes,no,cancel等,並且我在strings.xml中有一個這樣的字符串列表,但最終我移動了他們全部到一個單獨的字符串文件名爲「dialog_strings.xml」,我只是完全複製到我的新項目,並從那裏使用必要的字符串。它保持一切模塊化和可重複使用... – AndreiBogdan

+0

我也有一個客戶端使用相同的應用程序評估者對話框和彈出窗口,而不是所有的應用程序(他們是類似的),所以我保留在一個單獨的XML文件中的文本值,和常量和類在一個單獨的包,所以我只是複製粘貼整個包到新項目和瞧... – AndreiBogdan

2

我會給你一些關於管理枚舉的提示。

  1. 將枚舉置於其自己的文件中。

由於枚舉通常很小,並且不會寫很多代碼,所以如果將它放在與其他代碼相同的文件中,就很容易錯過它。如果你把它放在它自己的文件中,你只需要在文件瀏覽器中查找你的枚舉的名字,這比在代碼中查找它更容易。

  1. 善用包裝。

不要只將所有枚舉放在同一個包中(例如yourapp.enums),除非它們是相關的。就像你使用類和接口一樣,你可以將枚舉文件放在合適的包中。或者,您可以將枚舉放入合適包的子包中。例如,一個Color枚舉可以放入yourapp.graphics.enums包中。這使它更容易找到它們。

  1. 在一個文件中放置非常密切相關的枚舉。

這只是有道理的吧?如果枚舉關係密切,則通常需要編輯它們或添加一些方法或其他方法。因此,將相關的枚舉放在一起很方便,因此您可以在不打開新文件的情況下輕鬆編輯它們。

編輯:我沒有注意到你也想知道在哪裏存儲常量。這裏有一些更多的提示:

  1. 如果一個常量只在一個類中使用,則聲明該類中的常量。

來吧,這是顯而易見的。如果一個常量只用於一個類,它可能不應該暴露給世界。就像,它只是更有意義。因此,請記住在同一類中聲明這些常量爲private static final

  1. 如果在多個類中使用常量,請嘗試對這些常量進行分類。

例如,如果您有一些共享的首選項鍵作爲常量(您應該),請創建一個SharedPreferencesKeys類並將它們放在那裏。

  • 再次,使用包
  • 這基本上是相同的想法作爲枚舉。總是使用包來分類你的東西。

    儘管如此,這些只是我自己的一些習慣。如果你不喜歡他們,那很好。

    +0

    感謝您的解釋:) –

    +0

    @AbdulWaheed我編輯了我的答案,給你關於常量的一些提示。請看一看。如果您認爲我的答案回答了您的問題,請考慮點擊該複選標記以接受答案。 – Sweeper