Java 如果一些命名约定,如大写方法名,是如此的不受欢迎,为什么语言允许它们呢?
在允许最令人震惊的命名惯例禁忌的语言背后,是否有一个实际的或历史的理由?最明显的两个例子是大写函数名和小写类名,我经常在stackoverflow新手问题中看到它们被违反 我不知道在哪里可以做这些事情,所以为什么允许编译它们呢?目前,我的理论是Java 如果一些命名约定,如大写方法名,是如此的不受欢迎,为什么语言允许它们呢?,java,language-agnostic,naming-conventions,Java,Language Agnostic,Naming Conventions,在允许最令人震惊的命名惯例禁忌的语言背后,是否有一个实际的或历史的理由?最明显的两个例子是大写函数名和小写类名,我经常在stackoverflow新手问题中看到它们被违反 我不知道在哪里可以做这些事情,所以为什么允许编译它们呢?目前,我的理论是 在语言建立的时候,这并不是一个禁忌 这将使一些重要的边缘案例变得不可能,或者 语言的工作不是强化好的风格 我找不到关于这个话题的任何东西(下面有一些链接) 有些约定,例如变量名开头的下划线,或匈牙利符号(我在评论中提到了后者),虽然没有被大多数人接受
- 在语言建立的时候,这并不是一个禁忌
- 这将使一些重要的边缘案例变得不可能,或者
- 语言的工作不是强化好的风格
- 编码风格就像写作风格一样。如果你的写作风格很难阅读,而且读得不好,那么你的大脑实际上很难理解你在读什么
然而,如果像在正常阅读文本中一样,它是以一种与你的头脑所期望的很好匹配的形式排列的,那么它是清晰和容易理解的
另一方面,如果这种语言真的强迫你使用正确的语法来写所有的东西,那么它不仅会使编码变得缓慢和笨拙,而且会限制你的表达能力
许多年前,我遇到了一种语言,它允许您在变量名中添加奇怪的符号。允许用户执行以下操作:
var a=b = a = b;
var c<d = c > d;
if ( a=b & c<d ) ...
var a=b=a=b;
var-cd;
如果(a=b&c取决于语言设计者的意图,一些语言在实现和设计者认为应该如何做时比其他语言更固执己见
我现在能想到的最简单的例子是Go,它内置了单元测试和代码格式。设计师认为事情应该以某种方式完成,他们为您提供了实现这一点的工具
其他语言与Scala完全不同,Scala的语言设计人员在其实现中非常不专注,并为您提供以10种不同方式完成任何给定任务的工具
这并不是说一些语言是在专制统治下建立的,而另一些语言的要求非常宽松。这只是语言设计师的选择,我们最终不得不接受。我想在这里是3。这听起来更像是基于观点和假设的,而不是事实,但见鬼,我个人倾向于ard短列表中的第2项和第3项。强制执行样式不是语言的工作(在大多数情况下,也就是说……Python中的空格之类的东西是例外),而且“违反”可能有有效的内部原因给定产品/团队/公司/等内部的惯例,语言不应设置障碍。最终,在这一点上,最实际的原因是更改它会打破现有的代码库,这将是非常糟糕的。好吧,如果没有可用的信息,这都是水晶球。到目前为止,答案似乎是:cre每种语言的作者都会决定应该给他们的用户施加多少风格。这就是为什么有些惯例是允许的,尽管大多数人认为它的风格不好。很抱歉,我没有理解你的第一段。这正是我的观点。因为它不符合正常的写作标准,所以阅读起来非常困难。你似乎是建议禁止甚至最公然违反约定的语言是一个潜在的滑坡,这将迫使他们的程序员使用特定的风格。@aliteralmind-我希望建议应用不影响代码功能的限制的语言是不必要的限制。请参阅我的补充。Good指出。我认为这是同一件事的两个方面。作为语言创造者,你根本不会将任何风格强加给你的用户,这必然会导致糟糕的风格。你在阐述@OldCurmudgeon的最后一段,这是这些语言的创造者正在决定的基本概念:将多少风格强加给他们的使用我的意思是:“另一方面,如果这种语言实际上迫使你使用正确的语法编写所有东西,那么它不仅会使编码变得缓慢和笨拙,还会限制你的表达能力。”