java - 如果某些命名约定(例如大写方法名称)如此令人不悦,那么为什么语言完全允许它们呢?

标签 java language-agnostic naming-conventions

允许最令人震惊的命名约定禁忌的语言背后是否存在实际或历史原因?两个最明显的例子是大写的函数名和小写的类名,我经常在 stackoverflow 新手问题中看到它们被违反。

我不知道在哪里可以做这些事情,但为什么允许它们编译呢?目前,我的理论是

  • 建立语言时并没有这样的禁忌,
  • 这会使一些重要的边缘情况变得不可能,或者
  • 强制执行良好的风格不是语言的工作。

我找不到关于这个主题的任何内容(一些链接在下面)。

有一些约定,例如下划线开头的变量名,或匈牙利符号(后者我在评论中 personally disabused of)没有被压倒性地接受,但分歧较小。

我作为一名 Java 程序员提出这个问题,但也对其他语言的答案感兴趣。

一些链接:

最佳答案

编码风格就像写作风格。如果您写作风格难以阅读并且阅读很好,您的大脑实际上很难理解您正在阅读的内容。

但是,如果像在普通阅读文本中一样 - 它的布局与您的想法非常匹配,那么它就清晰易懂。

另一方面,如果该语言实际上强制您使用完全正确的语法编写所有内容,那么它不仅会使编码变得缓慢和笨拙,而且会限制您的表达能力。

很多年前,我遇到了一种允许您向变量名添加奇怪符号的语言。允许用户执行以下操作:

var a=b = a = b;
var c<d = c > d;
if ( a=b & c<d ) ...

a=b是一个完全可以接受的变量名,c<d 也是.我相信您会同意,这导致了许多解释错误。即使一种新语言允许我也不会使用它。编码标准是为了保持一致性并帮助人类理解,语法是为了帮助计算机思想理解。

关于java - 如果某些命名约定(例如大写方法名称)如此令人不悦,那么为什么语言完全允许它们呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22693967/

相关文章:

java - Web 服务器如何填充 $_POST 和 $_GET?

java - Android:如何暂停和恢复倒数计时器?

java - 摆脱Guice依赖

algorithm - 如何在恒定时间内找到格雷码中要更改的下一位?

language-agnostic - 单片内核和微内核有什么区别?

java - 如何处理类名中的首字母缩略词?

unit-testing - 在 MSTest 中组织测试名称

java - 从 Controller 下载安全页面,Spring security

language-agnostic - 了解自然语言对编程有帮助吗?

naming-conventions - 接口(interface)是否有 ISomething/ISomethingable 的替代方案?