Java 缩短方法/变量名?

Java 缩短方法/变量名?,java,coding-style,Java,Coding Style,使用“adjacentLocationsByState()”这样的长而描述性的方法名是否被认为是不好的风格?如果是这样的话,是否最好将其缩短为“AdjacLocationByState”这样的名称,在我看来,这样的名称肯定更短,但可读性也更低?别让我想了 当我阅读你的代码时,如果我不得不停下来思考方法名可能意味着什么,这通常意味着方法名是错误的。当向方法添加有用的上下文时,最好使用更长的方法名称。更长的版本更具可读性,并且代码是自文档化的。因此,一个好的方法名=方法责任。Adj可以理解为调整或相

使用“adjacentLocationsByState()”这样的长而描述性的方法名是否被认为是不好的风格?如果是这样的话,是否最好将其缩短为“AdjacLocationByState”这样的名称,在我看来,这样的名称肯定更短,但可读性也更低?别让我想了


当我阅读你的代码时,如果我不得不停下来思考方法名可能意味着什么,这通常意味着方法名是错误的。当向方法添加有用的上下文时,最好使用更长的方法名称。

更长的版本更具可读性,并且代码是自文档化的。因此,一个好的方法名=方法责任。Adj可以理解为调整或相邻等。它是文档的一部分

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

  • 实施
  • 文件
  • 举例说明(第1阶段):

    第二阶段:

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

    请记住:代码的读取量是其写入量的10倍

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

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


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

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

    • 必须像普通文本一样可读,人眼可以从书籍和大众媒体中看到(因此
      adjLocByState
      不是这样)
    • 最大限度地简化,利用编程技术-代码约定和默认状态。当某些术语开始重复得太频繁时,可以应用这些术语
    因此,adjacentLocationsByState()读起来非常好,但可以缩短为:

    邻接位置()

    默认情况下,它将按状态和
    adjacentLocations(state)
    返回位置,或者使用允许有更多选项的技术进行链接:
    adjacentLocations().by(state)
    。此处的状态是枚举位置条件的成员

    因此,在一天结束时,它可能看起来像:

    • 邻接位置()
    • adjacentLocations().by(州)
    • 相邻位置(州)

    当然,在编写第二个和第三个表单时需要牺牲时间。

    使用较长的一个。。它更具描述性。。。如果你想选择较短的一个,你最好使用ALB…在“变量名没有意义”和“变量名没有意义”之间没有区别如果您正在阅读一个不熟悉的源文件,您更愿意遇到哪一个问题?在代码中命名东西时,更喜欢精巧而不是聪明。这个问题与堆栈溢出无关,因为它征求意见并引起讨论。顺便说一句,最好的选择是一个简短、描述性的名称。例如,我发现目标C代码几乎无法穿透,这正是因为长名称堆积在文本墙中,语法和逻辑流完全被大量的字母字符淹没了“当我阅读你的代码时,如果我不得不停下来思考方法名称可能意味着什么,这通常意味着方法名称是错误的。”我同意。我在上个月来到一个新的代码库,正在阅读名为“rep”的变量。我假设它意味着“重复”,但结果它意味着“报告”“。如果原作者加上这三个额外的字母,避免混淆,那就更好了!是的,这就是我要说的。而名为“rep”的变量的根本原因是什么?作者没有想到他的代码的其他读者(除了他自己)。他可能以为只有他会再读一遍。这总是一个错误的假设;甚至在家里。(更不用说,我自己的代码在几个月后很难阅读,如果它包含命名错误的变量的话。)完全同意!它也适用于评论-当我在自己的项目上工作时,我评论一切都是为了ConfusedFutureMe的利益,就像我为假设未来的CodeDeveloper的利益所做的一样。我发现你的第二个例子几乎和第一个一样不可读,只是出于不同的原因。事实上,您已经指出了两种错误的名称选择途径。程序员不是人类,大众媒体标准不适用:))但说真的,最可读的代码使用的是朗朗上口的助记符,而不是完整的短语。此外,大多数局部变量名都只是占位符,可以是一个或两个字母长。以数学为例,有一个字段已经使用了两千年的符号。是的,我可以从数学中理解
    def
    fun
    ,因为我有数学背景。在许多情况下,使用诸如
    var
    obj
    之类的简短术语会非常有效,我经常在我的项目中使用这些术语。这看起来更像是“正常人”使用的特定领域术语或缩写,即DNA或CIA,每个人都知道这些术语或缩写的含义。是的,我还认为,当你开始考虑可读性、简单性、采取小步骤等时,编程就成了一门艺术。:)绝对地否则我们早就厌倦了:)
    ObjectOutputStream stackOverflowElementOuputStream = ...
    List stackOverflowElements : ob.getStackOverflowElement();
    for(Object currentStackOverflowElement: stackOverflowElements){
       stackOverflowElementOuputStream.writeObject(currentStackOverflowElement);
    }