缩短方法/变量名称?

时间:2014-01-17 11:21:04

标签: java coding-style

使用long是一种不好的风格,但使用描述性的方法名称,例如“adjacentLocationsByState()”,如果是这样的话,最好将它缩短为类似“adjLocByState”的东西,这种东西肯定更短,但在我的意见

5 个答案:

答案 0 :(得分:10)

不要让我思考。

当我读取你的代码时,如果我必须停下来思考方法名称的含义,通常意味着方法名称是错误的。当为方法添加有用的上下文时,更长的方法名称是可取的。

答案 1 :(得分:2)

请记住:代码的读取次数比写入的次数多10倍。!

你真的会编写经常被反复阅读的代码。你的名字越有意义,代码就越容易理解。

您正在声明类,字段,方法,变量等等。你正在考虑它们,你正在开发一个定义明确的结构。一直以来,你做出了艰难的决定。您为实体提供的名称(类,字段,......)反映了您对此的所有想法。它们反映了您的代码的意图。

结论:名称是代码中最重要的属性。因此,您应始终深入思考您为变量,方法等赋予的名称。你永远不应该以任何方式缩写它们。

答案 2 :(得分:2)

编写代码时我基本遵循两条规则:

  • 必须可读作为人眼从书籍和大众媒体中使用的普通文本(因此adjLocByState 案例)
  • 最大限度地简化,利用编程技术 - 代码约定和默认状态。当某些术语开始出现过于频繁时,可以应用这些术语。

因此,adjacentLocationsByState()读取完全正常,但它可以简化为:

adjacentLocations()

默认情况下会按州和adjacentLocations(STATE)返回位置,或者使用fluent interface技术进行链接,这样可以提供更多选项来获得标准:adjacentLocations().by(STATE)。这里的STATE是枚举LocationCriteria的成员。

所以在一天结束时它可能看起来像:

  • adjacentLocations()
  • adjacentLocations().by(STATE)
  • adjacentLocations(STATE)

当然,在第二和第三种形式的编码上花费了一些时间。

答案 3 :(得分:1)

更长的版本更具可读性,代码是自我记录的。所以一个好的方法名称=方法责任。调整可以理解为调整或相邻等。

答案 4 :(得分:0)

它是文档的一部分。

通常每个人都喜欢在提交前分两个阶段编写代码:

  1. 实施
  2. 文档
  3. 通过示例(阶段1):

    ObjectOutputStream oos = ...
    List a : ob.getSOE();
    for(Object a: b){
       oos.writeObject(a);
    }
    

    然后阶段2:

    ObjectOutputStream stackOverflowElementOuputStream = ...
    List stackOverflowElements : ob.getStackOverflowElement();
    for(Object currentStackOverflowElement: stackOverflowElements){
       stackOverflowElementOuputStream.writeObject(currentStackOverflowElement);
    }