Coding style 为什么所有的大写常量都被认为是糟糕的编码风格?

Coding style 为什么所有的大写常量都被认为是糟糕的编码风格?,coding-style,Coding Style,杰夫讲完了,但我不明白这个意思 那么,为什么您认为这是一种糟糕的编码风格呢 编辑: 一、 作为你们中的许多人,不要认为这是一种糟糕的编码风格。但杰夫是一个比我好得多的程序员,如果我错了,他的观点会让我头晕目眩。我做了几年的开发人员,现在正在成为一名C#开发人员,在Delphi中这是一种常见的做法。所有的大写字母都像是在对某人大喊大叫。这也使得代码更难阅读。翻一翻问题,为什么要使用所有大写字母?Jeff在评论中还有一些其他的话要说: 但另一方面,我仍然使用所有的大写字母和大写字母 强调 更少的代码

杰夫讲完了,但我不明白这个意思

那么,为什么您认为这是一种糟糕的编码风格呢

编辑:


一、 作为你们中的许多人,不要认为这是一种糟糕的编码风格。但杰夫是一个比我好得多的程序员,如果我错了,他的观点会让我头晕目眩。我做了几年的开发人员,现在正在成为一名C#开发人员,在Delphi中这是一种常见的做法。

所有的大写字母都像是在对某人大喊大叫。

这也使得代码更难阅读。

翻一翻问题,为什么要使用所有大写字母?

Jeff在评论中还有一些其他的话要说:

但另一方面,我仍然使用所有的大写字母和大写字母 强调

更少的代码?这是一项值得的事业 值得认真讨论

但不管你叫什么“foo”, “Foo”、“_Foo”或“Foo”?嗯

命名约定非常重要 具有争议性和宗教性。 开发者应该选择他们喜欢的东西 比如,希望不是这样的事情 太多与“当地人”意见相左 “公约”,就这么做吧。A. 很多讨论和抱怨 过度命名是不值得的

也就是说,我认为所有的帽子都是真的 难读


我也用它来表示常量,但我也能理解为什么有些人不喜欢它。这有点像用德语或其他语言写小写的东西。

< P>有些人认为所有的帽子都是“老派”。考虑一下:

之间的区别
const string erromessage=“一些错误消息。”

const string ERROR\u MESSAGE=“一些错误消息。”

两者都是完全可用的,但是较新的开发人员(比如从.NET开始的开发人员)很少使用ALL CAPS版本

我认为如果你的团队使用不同的风格,这是一个糟糕的编码风格。除此之外,我真的不在乎。至少当我看到一些共享代码中的所有大写字母时,我可以猜测它是一个常量。

@ck


因为这是惯例

我对宏和预处理器符号使用所有的大写字母。因此,我的C99之前的C常量都是大写的,但不是我所知道的任何其他语言。

我不认为这是一种糟糕的编码风格。也许是老式的,但还不错。它确实使常数从其他变量中脱颖而出。

我不认为它是错的。大多数情况下,这是个人的选择。 对于你的个人编码,做你想做的。
对于您的专业编码,请遵循公司政策。

嗯,有一个旧的可读性问题。通常情况下,案例测试更容易阅读

但也有例外。像SQL这样的语言通常都是大写的(尽管不区分大小写)

此外,还有其他用途,比如区分“常量”和正则变量,这在很多语言(如PHP、Python等)中都可以看到,尽管Jeff出于某种原因不喜欢这样做,这显然违反了C#代码风格准则


所以,总的来说,我不认为这在任何地方都是错误的,但我确实认为人们应该始终尝试并遵循一般的最佳实践。在罗马时,要像罗马人那样去做——在编写Python代码时,要遵循:)

就像用粗体书写不是一个好主意一样

对我来说,唯一令人信服的原因是风格的一致性。对于非.NET语言,如java/C++,所有的CAPS常量都是可以接受的。
对于C#,标准是使用PascalCase,如下所述:

你会发现Jeff的许多陈述首先是有争议的,准确性是次要问题。如果他不是偶尔煽动性的,他的博客就不会那么受欢迎。(想想最后一行,“也就是说,只有傻瓜才会用标签来格式化他们的代码。”)这确实是主观的。不要认为他所说的一切都是真的和好的——这不是他的本意。如果你不同意,在评论中踢他的屁股,看看他是否回信。:)


我认为
所有的常量都是完美的:它们可以立即识别和熟悉。我的工作场所风格指南的一部分(我们没有那么多)是将所有静态常量都写在caps中。别担心;只需使用团队其他成员使用的任何东西。决定使用
StudlyCaps
vs.
camelCase
vs
crying\u CAPS
可能值得讨论90秒。

所有CAPS都是预处理器宏常量的传统C名称。将这些名称放在与其他名称不同的名称空间中非常有用,因为预处理器将替换找到名称的任何位置,而不管范围之类的事情

Jeff使用的常量在语义上是一个无法更改的变量。它遵守所有的作用域原则和一切,并且在语义上与具有相同值的非常量变量相同

换言之

#define max_length 5
这是一个问题,因为有人可能在不同的上下文中使用
max_length
作为变量,而在不同的上下文中通常是安全的

const int max_length = 5;
它只是一个变量声明。因此,使用

#define MAX_LENGTH 5

因为惯例是只有预处理器常量都是大写的,所以它不会干扰任何其他用途。

坦率地说,我不认为这是一种糟糕的编码风格。事实上,即使是官方的Java代码样式也会像其他语言约定一样使用常量all capitals()


从理论上讲,它更难阅读——我们人类喜欢使用字母的可变高度来提高阅读速度(我们可以从粗略的字型和第一个/最后一个字母中推断出很多信息)。然而,我对简短的大写短语没有问题。这几乎不是“大喊大叫”(你根本不在乎自己有多粗鲁),它清楚地表明名字可能是可变的,而那些不是可变的。

尖叫是可以的。对于常数,它告诉读者