为什么 Java 程序员喜欢将变量命名为“ clazz”?

我见过许多使用 Class clazz这样的声明的代码。这是从哪里来的?这是什么大会吗?我认为“ clazz”甚至不是一个英语单词,根本没有任何意义,怎么会有这么多程序员巧合地命名一个错误的名字呢?

71683 次浏览

我根据 VonC 的回答做了两个变体。

因为他们不能使用他们想要使用的词是 class。它是保留的。

我的第一个版本:

for k in `git branch -a | sed -e s/^..// -e 's/(detached from .*)/HEAD/'`; do echo -e `git log -1 --pretty=format:"%Cgreen%ci |%Cblue%cr |%Creset$k |%s" $k --`;done | sort | column -t -s "|"

这仅仅是因为“ class”是一个保留关键字,因此不允许使用 Class class,因此您将看到 Class clazzClass cls

它处理本地和远程分支(-a) ,处理分离头状态(较长的 sed 命令,尽管解决方案有点粗糙——它只是用关键字 HEAD 替换分离的分支信息) ,添加提交主题(% s) ,并通过格式字符串中的文字管道字符将内容放入列中,然后将最终结果传递给 column -t -s "|"。(您可以使用任何东西作为分隔符,只要它是您在其余输出中不希望看到的东西。)

它只是一个英文单词(等价)被关键字类关键字取代,使人们明白它是一个类。这几乎是为了提高代码的可读性

我的第二个变体非常古怪,但是我真的想要一个仍然具有“这是您当前所在的分支”指示符的东西,就像 Branch 命令所做的那样。

CURRENT_BRANCH=0
for k in `git branch -a | sed -e 's/\*/CURRENT_BRANCH_MARKER/' -e 's/(detached from .*)/HEAD/'`
do
if [ "$k" == 'CURRENT_BRANCH_MARKER' ]; then
# Set flag, skip output
CURRENT_BRANCH=1
elif [ $CURRENT_BRANCH == 0 ]; then
echo -e `git log -1 --pretty=format:"%Cgreen%ci |%Cblue%cr |%Creset$k |%s" $k --`
else
echo -e `git log -1 --pretty=format:"%Cgreen%ci |%Cblue%cr |%Creset* %Cgreen$k%Creset |%s" $k --`
CURRENT_BRANCH=0
fi
done | sort | column -t -s "|"

没什么大逻辑牵涉其中

我是在 Josh Bloch 的拼图游戏里看到的。但是我很确定其他开发人员在更早的时候就已经使用了它。乔什 · 布洛赫让它更出名了。

分类

遥控器分支和每个分支的最后提交日期进行了排序。

for branch in `git branch -r | grep -v HEAD`;do echo -e `git show --format="%ci %cr" $branch | head -n 1` \\t$branch; done | sort -r

自 JDK 1.0以来,在 Java 中使用 clazz代替保留词“ class”。“ class”是您想要的,但是缩写或插入垃圾(“ a”、“ the”、“ _”等)会降低清晰度。clazz只是说阶级。“国际”英语使用者(那些同时阅读英式英语和美式英语的人)习惯于将“ s”和“ z”换位。

说英语的人(那些同时读英式英语和美式英语的人)习惯于把‘ s’和‘ z’换位。

由于 Java 从一开始就公开了源代码和适当的文化,因此有价值的 Java 代码和教程采用了相同的约定。这是 Java 生态系统的伟大之处之一,我认为这是其成功的重要组成部分。

Java 没有允许您使用关键字作为标识符的特性,这与带有 @前缀的 C # 不同(例如,@class是一个有效的标识符)

下面是我在回顾了 这个之后得出的结论。

for REF in $(git for-each-ref --sort=-committerdate --format="%(objectname)" \
refs/remotes refs/heads)
do
if [ "$PREV_REF" != "$REF" ]; then
PREV_REF=$REF
git log -n1 $REF --date=short \
--pretty=format:"%C(auto)%ad %h%d %s %C(yellow)[%an]%C(reset)"
fi
done

如果您觉得有必要,可以编写自己的 Java 编译器,包含一个上下文规则,允许您使用 class作为变量名。尽管我认为只使用 clazzklass会更好地利用你的时间——它可能对你的健康也有好处。

我的分支可以很容易地删除。

PREV_REF检查是在多个分支指向同一提交时删除重复项。(就像远程中存在的本地分支一样。)

[ https://git-scm.com/docs/git-branch]

Echo-e $(git show —— pretty = format: “% Cgreen% ci% Cblue% cr% Creset”$k —— | head-n 1) t $k 完成排序 }

因为可以说 Class对象是 表示 a < strong > type ,所以我个人更喜欢声明像 Class type这样的变量。