这句话有什么意义?(Sun的Java变量命名约定)
在过去的几天里,我一直在引用Sun文档中的这一部分,直到现在我才停下来思考它在说什么,我无法理解它。请记住英语不是我的第一语言 变量:除变量外,所有实例、类和类常量都以小写字母混合大小写 这有什么意义?这不是说类名是大小写混合的,第一个字母是小写的吗?就像我应该把它命名为这句话有什么意义?(Sun的Java变量命名约定),java,naming-conventions,Java,Naming Conventions,在过去的几天里,我一直在引用Sun文档中的这一部分,直到现在我才停下来思考它在说什么,我无法理解它。请记住英语不是我的第一语言 变量:除变量外,所有实例、类和类常量都以小写字母混合大小写 这有什么意义?这不是说类名是大小写混合的,第一个字母是小写的吗?就像我应该把它命名为类myClass?类常量也是混合大小写,第一个字母小写?就像不是Integer.MAX\u VALUE,它应该被命名为Integer.maxValue 它真的说明了变量本身应该如何命名吗 我是没有正确地解析它,还是这实际上是一个
类myClass
?类常量也是混合大小写,第一个字母小写?就像不是Integer.MAX\u VALUE
,它应该被命名为Integer.maxValue
它真的说明了变量本身应该如何命名吗
我是没有正确地解析它,还是这实际上是一个明显的错误?这几乎可以肯定是对实际含义的错误编辑版本: 变量:所有变量的名称 (不包括常数)处于混合状态 第一个字母小写的大小写
上面有几个方框: 类名应该是名词,大小写混合,每个内部单词的第一个字母大写。尽量保持你的类名简单和描述性。使用完整的单词,避免使用首字母缩略词和缩写词(除非缩写词比长格式更广泛使用,如URL或HTML) 除此之外: 声明类常量的变量和ANSI常量的名称应全部大写,并用下划线(“\”)分隔。(为了便于调试,应避免使用ANSI常量。) 矛盾,不是吗?“类常量”应该排除在变量约定语句之外,即使它们是
public final
类的非静态常量,因为这会让人困惑
至于“变量除外”,我相信他们的意思是原语应该只有一个词。你需要通读全文才能了解上下文: 除变量外,所有实例, 类,并且类常量位于 大小写混合,以小写字母开头 信。内部单词以开头 大写字母。变量名应该是 不要以下划线或美元开头 签署$个字符,即使两者都是 是允许的 变量名应该很短 有意义。变量的选择 名称应该是助记符-也就是说, 旨在向休闲人群表明 观察其使用意图。 一个字符的变量名应该是 除非是临时的 “一次性”变量。俗名 临时变量为i,j,k, m、 n表示整数;c、 d为,e为 人物 所以[局部]变量要简短(这意味着它们可能没有足够的“单词”来混合大小写) 所有其他变量(在实例或类级别的变量,非本地变量)都是大小写混合的,并且以小写字母开头(并且可能足够“冗长”,能够混合大小写,比如“lineNumber”而不是“number”) 编辑(忘记常量) 有两种方法可以查看Java中的常量:
我认为,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;
}
}