什么是保持常数和枚举的正确位置?

时间:2016-06-16 06:13:29

标签: java android

在应用程序开发中,我经常需要使用' Constants'和' Enums'。就我使用该策略而言,我保留所有'常数'在另一个名为'常数'但是我不确定是否应该将所有的Enum保留在一个单独的课程中,因为我使用了' Constants'?或者我应该把Enums留在我需要的那个班级?或者我也应该将Enums保留在Contants类中作为'静态'。我的问题是保留所有常量和枚举的正确位置。

2 个答案:

答案 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执行不同类型动画的枚举,可以:

  1. com.yourapp.ui.customviews.animatedView中的某个地方有一个包,其中既包含自定义视图类,也包含枚举,作为单独的文件
  2. 将您的枚举放在自定义视图类
  3. ...所以当你在另一个项目中重用视图时,你只需要复制整个包或只复制View类,你就可以确保复制了与该类有关的所有内容。

    最后一件事:如果你使用字符串,比方说,对话框,你有一些通用文本,如“ok”,yes“,”no“,”取消“, “成功”,“没有可用的互联网连接”等,你已经用X语言翻译了它们,试着将它们保存在一个单独的.xml文件中,这样你就可以轻松地重复使用文本值。你只需复制新项目中的这些字符串文件,而不是查看长.xml文件,并提取与该对话框相关的字符串并将它们移动到新文件。

    所以结束,尝试尽可能地将代码保存在模块中,并将所有内容保持在“内部”,将类似的内容放在一起。

    至少那是我对常数的个人处理方法,到目前为止一直没问题。

答案 1 :(得分:2)

我会给你一些关于管理枚举的提示。

  1. 将枚举放在自己的文件中。
  2. 由于枚举通常很小而且你不会在其中编写大量代码,如果你把它放在与其他代码相同的文件中,很容易错过它。如果你把它放在自己的文件中,你只需要在文件浏览器中查找你的枚举名称,这比在代码中查找它更容易。

    1. 充分利用包裹。
    2. 不要将所有枚举放在同一个包中(例如yourapp.enums),除非它们是相关的。就像使用类和接口一样,将枚举文件放在合适的包中。或者,您可以将枚举放在合适包的子包中。例如,可以将Color枚举放入yourapp.graphics.enums包中。这只是让它更容易找到它们。

      1. 在一个文件中放置密切相关的枚举。
      2. 这才有意义,对吗?如果枚举密切相关,您通常需要编辑它们或添加一些方法或其他。因此,将相关的枚举放在一起很方便,这样您就可以轻松编辑它们而无需打开新文件。

        编辑:我没有注意到你也想知道存储常数的位置。以下是一些提示:

        1. 如果常量仅在一个类中使用,则在该类中声明常量。
        2. C' mon,这很明显。如果一个常数仅用于一个类,它可能不应该暴露给世界。就像,它更有意义。所以,请记住在同一个类中将这些常量声明为private static final

          1. 如果在多个类中使用常量,请尝试对这些常量进行分类。
          2. 例如,如果您有一些共享首选项键作为常量(您应该这样做),请创建一个SharedPreferencesKeys类并将它们放在那里。

            1. 再次,使用包
            2. 这与枚举基本相同。始终使用包来分类您的东西。

              然而,这些只是我自己的一些习惯。如果你不喜欢它们,那很好。