【问题标题】:Naming Convention Java for different class but same variable name不同类但变量名相同的Java命名约定
【发布时间】:2020-11-06 07:33:14
【问题描述】:

只是需要对以下内容进行一些澄清。可能很愚蠢,但请说明利弊。假设在 IDE 中,我们在调试时搜索变量名称,并在此期间映射或向其他应用程序发送一些数据。

Class State{
 private String stateName;
 private String stateCode;
}

Class City{
 private String cityName;
 private String cityCode;
}

上面的变量名可以吗,或者我们应该有类似的名字

Class State{
 private String name;
 private String code;
}

Class City{
 private String name;
 private String code;
}

假设这将作为某些 CountryDTO 的一部分转到某些 api。

我试图在网上找到这个约定,但除了助记符

这个词外找不到任何东西

【问题讨论】:

  • 第二个例子对我个人来说更有意义,因为如果我检查name 字段或在State 对象上调用getName(),很明显这指的是州名。向每个字段添加“状态”似乎只是多余的。但最终这是基于意见的。
  • 我认为无论哪种情况,您在搜索变量时都不会遇到任何问题。我个人会选择第二个例子。 stateObject.name 是不言自明的,不需要使用“stateName”
  • 私有变量的名称并不重要(它们应该是可读的,而不是 x y 或 z),但正确命名 getter 和 setter 非常重要。所以人们会知道设置或得到什么!
  • 如果这是一个 JPA 实体?和列名匹配第一个示例命名约定?

标签: java class object naming-conventions


【解决方案1】:

我个人认为命名约定取决于对象的用途。如果我正在查询一个复杂的数据库,我将使用第一个示例,变量名很可能跟随数据库中的列名。对我来说,这有助于任何程序员读取对象在数据库中的位置等。

如果这只是一个快速脚本,那么第二个示例可以正常工作,我只是建议您至少记录变量!

【讨论】:

  • 如果这是一个 JPA 实体?和列名匹配第一个示例命名约定?
【解决方案2】:

由于类名已经定义了对象类型,它不需要其中的每个元素重复。

   Class City {
     private String name;
     private String code;
   }

正如您将对象的实例命名为 ex。 City city = new City(); 您再次将类类型作为名称的一部分。

只需比较city.namecity.cityName,第一个更简单、更干净。

根据对象的复杂性(每个信息包含的属性数量),您可能需要在同一个对象中定义两个具有相同名称的属性。

简单示例:something.getCityName()something.getCountryName(),但这仅适用于城市和国家/地区不能作为单独对象使用的情况,在这种情况下它将是 something.getCity().getName()

【讨论】:

  • 如果这是一个 JPA 实体?和列名匹配第一个示例命名约定?
  • 就我个人而言,我仍然会如前所述定义它们(DTO 和实体),并使用@Column 注释将它们调整为列名。因为如果有人已经通过将表名作为每个列名的一部分而犯了命名约定“错误”,我不会继续这种做法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-19
  • 1970-01-01
  • 2017-01-17
  • 2012-09-13
相关资源
最近更新 更多