这句话有什么意义?(Sun的Java变量命名约定)

这句话有什么意义?(Sun的Java变量命名约定),java,naming-conventions,Java,Naming Conventions,在过去的几天里,我一直在引用Sun文档中的这一部分,直到现在我才停下来思考它在说什么,我无法理解它。请记住英语不是我的第一语言 变量:除变量外,所有实例、类和类常量都以小写字母混合大小写 这有什么意义?这不是说类名是大小写混合的,第一个字母是小写的吗?就像我应该把它命名为类myClass?类常量也是混合大小写,第一个字母小写?就像不是Integer.MAX\u VALUE,它应该被命名为Integer.maxValue 它真的说明了变量本身应该如何命名吗 我是没有正确地解析它,还是这实际上是一个

在过去的几天里,我一直在引用Sun文档中的这一部分,直到现在我才停下来思考它在说什么,我无法理解它。请记住英语不是我的第一语言

变量:除变量外,所有实例、类和类常量都以小写字母混合大小写

这有什么意义?这不是说类名是大小写混合的,第一个字母是小写的吗?就像我应该把它命名为
类myClass
?类常量也是混合大小写,第一个字母小写?就像不是
Integer.MAX\u VALUE
,它应该被命名为
Integer.maxValue

它真的说明了变量本身应该如何命名吗


我是没有正确地解析它,还是这实际上是一个明显的错误?

这几乎可以肯定是对实际含义的错误编辑版本:

变量:所有变量的名称 (不包括常数)处于混合状态 第一个字母小写的大小写


上面有几个方框:

类名应该是名词,大小写混合,每个内部单词的第一个字母大写。尽量保持你的类名简单和描述性。使用完整的单词,避免使用首字母缩略词和缩写词(除非缩写词比长格式更广泛使用,如URL或HTML)

除此之外:

声明类常量的变量和ANSI常量的名称应全部大写,并用下划线(“\”)分隔。(为了便于调试,应避免使用ANSI常量。)

矛盾,不是吗?“类常量”应该排除在变量约定语句之外,即使它们是
public final
类的非静态常量,因为这会让人困惑


至于“变量除外”,我相信他们的意思是原语应该只有一个词。

你需要通读全文才能了解上下文:

除变量外,所有实例, 类,并且类常量位于 大小写混合,以小写字母开头 信。内部单词以开头 大写字母。变量名应该是 不要以下划线或美元开头 签署$个字符,即使两者都是 是允许的

变量名应该很短 有意义。变量的选择 名称应该是助记符-也就是说, 旨在向休闲人群表明 观察其使用意图。 一个字符的变量名应该是 除非是临时的 “一次性”变量。俗名 临时变量为i,j,k, m、 n表示整数;c、 d为,e为 人物

所以[局部]变量要简短(这意味着它们可能没有足够的“单词”来混合大小写)

所有其他变量(在实例或类级别的变量,非本地变量)都是大小写混合的,并且以小写字母开头(并且可能足够“冗长”,能够混合大小写,比如“lineNumber”而不是“number”)

编辑(忘记常量)

有两种方法可以查看Java中的常量:

  • 跟final这个词有关吗
  • 任何有保证价值的东西 那总是一样的
  • 因此:

    这里“变量”是“常量”,因为一旦给它赋值,它就不能改变,但它不像“常量”那样是常量,因为“常量”的值总是5

    我认为,2是java中唯一的常量。< /P> 编辑#2(回应下面的评论)

    我将把它改写为:

    除局部变量外,所有 实例、类和类空白 期末考试[我还可以具体说明这一点 空白决赛没有 单个编译时值]在 大小写混合,以小写字母开头 信


    您可以查看更多描述。

    Sun已将其视为一个错误,优先级较低:

    描述命名变量的约定(表中倒数第二行)。这显然是错误的——阶级 如表中的下一行所示,常量不是混合的。这是什么“除了变量” 生意?文本应该是描述变量的

    案文应为:

    “所有实例和类变量都是混合的…”

    因此删除了“变量除外”和“类常量”这两个词


    好像是断章取义或编辑不当……对我来说似乎是一个打字错误。@Gabriel:那个链接可以点击到Sun自己的官方网站。你可以看到整个上下文,告诉我它是否有意义。我查看了archive.org,这篇文章的日期是1998年2月15日,所以我找不到任何解释。也许他们想写“包括”而省略额外的“类”…是的,这是有道理的,因为这应该是官方的建议。我只是很惊讶,这份官方文件可能包含了如此明显的错误,而且经过这么长时间后,它是没有问题的。书面声明毫无意义。我盯着它看了一会儿,脸上带着一种滑稽的表情,试图弄明白它的意思。但在数百页的建议中,这些东西被遗漏了。那么,我该如何在回答中引用这项建议的权威呢?每当我看到人们用大写字母命名变量时,我总是引用这句话;直到现在,我才意识到这毫无意义,而且可能让他们的情况变得更糟。你所引用的文本显然是荒谬的。联系Oracle,请求修复。参考其他编码约定站点,例如:“变量名必须以小写字母开头,大小写混合。”问题不在于其他框中的内容。问题是这个盒子在说什么。因为它没有任何意义。最好的解决方法是看上下文。第一句话对m来说仍然没有任何意义
    class Raster;
    class ImageSprite;
    
    static final int MIN_WIDTH = 4;
    
    static final int MAX_WIDTH = 999;
    
    static final int GET_THE_CPU = 1;
    
    class Foo
    {
        public final int variable;
        public final int CONSTANT;
    
        static
        {
            variable = // generate a random number.
            CONSTANT = 5;
        }
    }