【问题标题】:The naming of constants; Type or Name first? [closed]常量的命名;先输入还是命名? [关闭]
【发布时间】:2013-12-28 10:18:48
【问题描述】:

困扰我很久的是常量的命名。

例如磁盘上保存图像的路径:

PATH_IMAGES

还有保存图片的网址:

URL_IMAGES

但我也可以使用IMAGES_PATHIMAGES_URL。这同样适用于普通变量名: users_screenscreen_users 用于显示用户列表的屏幕。

有什么标准应该先出现吗?

当然,如果可能的话,类型不应包含在变量名中。但在很多情况下这是不可能的。

【问题讨论】:

  • 我认为这是个人风格,所以答案会固执己见。但我认为先输入更方便。
  • 我想说的是个人选择,没有硬性规定来命名它们。更多地取决于您为谁编写代码。我在一家初创公司工作,我们有自己的一套命名约定。

标签: java variables constants


【解决方案1】:

显然没有硬性规定,但典型的约定是使用[CATEGORY]_[ITEM],因为这是一种更简洁、更易于导航的管理方式。

考虑一下您有多个路径和多个屏幕的情况。你可能有:

  • PATH_ITEM
  • PATH_ANOTHER_ITEM
  • PATH_A_FINAL_ITEM
  • SCREEN_USER
  • SCREEN_ADMIN
  • SCREEN_HOME

这比管理/阅读/导航要容易得多:

  • ITEM_PATH
  • ANOTHER_ITEM_PATH
  • A_FINAL_ITEM_PATH
  • USER_SCREEN
  • ADMIN_SCREEN
  • HOME_SCREEN

通常,根据命名约定,最好的做法是从广义开始,以具体结束。

“普通变量名称”的情况略有不同,因为您通常希望在流动代码中读取良好的内容,而不是组织良好的项目层次结构中的内容,例如:

String imagePath = myImage.path;

同样值得注意的是,虽然 Oracle 提供了naming guidelines for constants,但它们并没有具体说明您的要求,因此最终归结为意见和可读性。老实说,只要你始终如一,这并不重要。

【讨论】:

  • “一般来说,按照命名约定,最好的做法是从广义开始,以具体结束。”优秀的!我怀疑我的问题是我不一致并且在不同的项目中使用了两种命名约定,这导致了混乱并最终导致了问题。感谢您和 Black 和 Time B 提供广泛而清晰的答案。
【解决方案2】:

想想在更大的程序范围内什么最有意义以及它是如何使用的。

例如,如果您有多个“图像”常量,那么让它们都以IMAGES 开头是有意义的,因为您需要做的就是开始输入IMA,然后代码完成会让您看到列表与图像相关的所有常量。

另一方面,如果您通常从考虑路径开始,并且大部分时间都在寻找所有可能的路径,那么将所有 PATH_ 内容组合在一起可能是有意义的。

关键是在您的代码中保持一致 - 最好与您经常使用的任何库保持一致。

【讨论】:

    【解决方案3】:

    Oracle 在其命名中更喜欢 DETAIL_TYPE,例如

    • CharSequence 作为类名(而不是 SequenceChar)
    • java.lang.String.CASE_INSENSITIVE_ORDER 而不是 java.lang.String.ORDER_CASE_INSENSITIVE

    因此,在您的示例中将是 usersScreen

    但是,作为一般规则:使用支持可读性的命名。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-27
      • 1970-01-01
      相关资源
      最近更新 更多