在应用程序开发中,我经常需要使用' Constants'和' Enums'。就我使用该策略而言,我保留所有'常数'在另一个名为'常数'但是我不确定是否应该将所有的Enum保留在一个单独的课程中,因为我使用了' Constants'?或者我应该把Enums留在我需要的那个班级?或者我也应该将Enums保留在Contants类中作为'静态'。我的问题是保留所有常量和枚举的正确位置。
答案 0 :(得分:3)
我认为这里没有规则,我通常会尝试在我使用它们的地方保持常量值。尝试模块化你的代码,这样当你移动它的一大块,一个做特定事情的类时,你不需要进入常量类并复制该模块使用的N个常量。
即
如果我将常量用于附加组件,那么我将保留在最终将执行getExtra(...)调用的Activity中
如果我使用共享首选项键,我也将它们保留为常量,并将它们设置在Activity或类中,或者在共享首选项中设置值的任何内容。
对于其他类型的常量,请尝试使用 build.gradle 文件,然后将它们放在一个位置。
e.g。
buildConfigField "String", "SUPPORT_EMAIL", '"support@mysite.com"'
您将以BuildConfig.SUPPORT_EMAIL
甚至是资源价值:
resValue "string", "branch_io_key", "key_live_xxxxx"
您可以像普通字符串资源R.string.branch_io_key
对于枚举:再次尝试将您的逻辑尽可能地保留在特定包中,作为“模块”。例如,如果您创建一个自定义View
,其中包含用于后台内容的内置动画,例如,您可以为View
执行不同类型动画的枚举,可以:
com.yourapp.ui.customviews.animatedView
中的某个地方有一个包,其中既包含自定义视图类,也包含枚举,作为单独的文件...所以当你在另一个项目中重用视图时,你只需要复制整个包或只复制View类,你就可以确保复制了与该类有关的所有内容。
最后一件事:如果你使用字符串,比方说,对话框,你有一些通用文本,如“ok”,yes“,”no“,”取消“, “成功”,“没有可用的互联网连接”等,你已经用X语言翻译了它们,试着将它们保存在一个单独的.xml文件中,这样你就可以轻松地重复使用文本值。你只需复制新项目中的这些字符串文件,而不是查看长.xml文件,并提取与该对话框相关的字符串并将它们移动到新文件。
所以结束,尝试尽可能地将代码保存在模块中,并将所有内容保持在“内部”,将类似的内容放在一起。
至少那是我对常数的个人处理方法,到目前为止一直没问题。
答案 1 :(得分:2)
我会给你一些关于管理枚举的提示。
由于枚举通常很小而且你不会在其中编写大量代码,如果你把它放在与其他代码相同的文件中,很容易错过它。如果你把它放在自己的文件中,你只需要在文件浏览器中查找你的枚举名称,这比在代码中查找它更容易。
不要将所有枚举放在同一个包中(例如yourapp.enums
),除非它们是相关的。就像使用类和接口一样,将枚举文件放在合适的包中。或者,您可以将枚举放在合适包的子包中。例如,可以将Color
枚举放入yourapp.graphics.enums
包中。这只是让它更容易找到它们。
这才有意义,对吗?如果枚举密切相关,您通常需要编辑它们或添加一些方法或其他。因此,将相关的枚举放在一起很方便,这样您就可以轻松编辑它们而无需打开新文件。
编辑:我没有注意到你也想知道存储常数的位置。以下是一些提示:private static final
例如,如果您有一些共享首选项键作为常量(您应该这样做),请创建一个SharedPreferencesKeys
类并将它们放在那里。
这与枚举基本相同。始终使用包来分类您的东西。
然而,这些只是我自己的一些习惯。如果你不喜欢它们,那很好。