在Javavariables和方法名中使用下划线

即使在现在,我经常在Javavariables和方法中看到下划线,一个例子是成员variables(如“m_count”或“_count”)。 据我所知,在这些情况下使用下划线称为Sun的坏风格。

他们应该使用的唯一的地方是在常量(如在“公共最终静态INT IS_OKAY = 1;”),因为常量应该是全部大写,而不是骆驼大小写。 在这里,下划线应该使代码更具可读性。

你认为在Java中使用下划线是不好的风格? 如果是(或不),为什么?

如果你现在没有代码使用它,我build议继续。 如果你的代码库使用它,继续。

编码风格最重要的是一致性 。 如果你没有什么要一致的话,那么语言供应商的build议可能是一个很好的开始。

  sunDoesNotRecommendUnderscoresBecauseJavaVariableAndFunctionNamesTendToBeLongEnoughAsItIs();

 as_others_have_said_consistency_is_the_important_thing_here_so_chose_whatever_you_think_is_more_readable(); 

规则:

  1. 做你正在编辑的代码
  2. 如果#1不适用,请使用camelCase,不要用下划线

我不认为用Java或任何其他语言使用_或m_来指示成员variables是不好的。 我认为它提高了你的代码的可读性,因为它可以让你查看代码片段并快速识别出来自本地的所有成员variables。

你也可以通过强制用户在“this”之前join实例variables来达到这个目的,但是我发现这个太严厉了。 在许多方面,它违反DRY,因为它是一个实例variables,为什么要限定它两次。

我个人的风格是使用m_而不是_。 原因是也有全局和静态的variables。 m _ / _的优点是区分variables范围。 所以你不能重用_全局或静态,而是我分别selectg_和s_。

“坏风格”是非常主观的。 如果某个规定适用于你和你的团队,我认为这将符合一个好的/不错的风格。

要回答你的问题:我使用一个前导下划线来标​​记私有variables。 我觉得很清楚,我可以快速扫描代码,找出发生了什么事情。

(我几乎从不使用“这个”,除了防止名称冲突。)

在variables的前面使用“m_”或“_”可以更容易地在整个对象的方法中find成员variables。

作为一种附带的好处,打字“m_”或“_”将会使得intellsense首先popup它们;)

  • 我碰巧喜欢(私有)实例variables的前导下划线,看起来更容易阅读和区分。当然,这件事可以让你陷入边缘情况(例如公共实例variables(不常见,我知道)) – 无论你的名字他们你可能会打破你的命名约定:
  • private int _my_int; public int myInt;? _my_int? )

– 就像我喜欢这种风格,并认为它是可读的,我发现它可能比它的价值更麻烦,因为它是不寻常的,它可能不匹配你使用的代码库中的任何其他东西。

自动生成的代码(例如eclipse的getter,setter)不太可能理解这个,所以你必须手工修改它,或者使用eclipse来修复它,以使其能够识别。

最终,你会违背其他(java)世界的首选项,并可能会有一些烦恼。 正如之前的海报所提到的,代码库的一致性胜过了上述所有问题。

有一些东西可以区分私有variables和公共variables是很好的,但是我不喜欢通用编码中的“_”。 如果我能用新的代码来帮助它,我会避免使用它。

这是一种编码风格的混合。 一个思想stream派是在私人成员的前面加上一个下划线来区分它们。

 setBar( int bar) { _bar = bar; } 

代替

 setBar( int bar) { this.bar = bar; } 

其他人将使用下划线来表示在方法调用结束时将超出范围的临时局部variables。 (我觉得这很没用 – 一个好的方法不应该那么久,声明是正确的!所以我知道它超出了范围)编辑:上帝禁止来自这所学校的程序员和来自memberData学校的程序员合作! 这将是地狱。

有时,生成的代码将以_或__开头。 这个想法是没有人会做到这一点,所以它是安全的。

在过去,使用下划线被认为是不好的风格是有原因的。 当一个运行时编译器是负担不起的,监视器以惊人的320×240像素分辨率来区分_name__name往往是不容易的。

这是Sun对Java的build议的链接 。 不是说你必须使用这些代码,或者甚至是他们的代码都遵循它们,但是如果你从头开始,这是一个好的开始。 Eclipse等工具内置了格式化程序和清理工具,可以帮助您遵守这些惯例(或您定义的其他惯例)。

对我而言,'_'太难以键入:)

我认为任何打破语言自己的风格指引(没有合理的理由)的风格是丑陋的,因此是“坏”的。

毫无疑问,你所看到的代码是由曾经使用下划线可接受的语言的人编写的。

有些人无法适应新的编码风格

人们这样做的原因(以我的经验)是区分成员variables和函数参数。 在Java中你可以有这样的一个类:

 public class TestClass { int var1; public void func1(int var1) { System.out.println("Which one is it?: " + var1); } } 

如果您创build成员variables_var1或m_var1,则不会在函数中产生歧义。

所以这是一种风格,我不会说它不好。

我个人认为,一种语言不应该对编码风格做出规定 。 这是一个关于可读性的偏好,用法,便利,概念的问题。
现在,一个项目必须设置编码规则,以保持整个列表的一致性。 你可能不同意这些规则,但如果你想贡献(或在一个团队中工作),你应该坚持。

至less,像Eclispe这样的IDE是不可知的,允许设置像variables前缀或后缀这样的规则,各种样式的大括号放置和空间pipe理等等。所以你可以用它来重新编写你的指南的代码。

注意:我是那些从C / C ++中保留旧习惯的人,他们用成员variables的m_前缀(和静态variables的s_)来编写Java,用起始的b作为前缀的布尔值,用函数名和大括号的首字母大写。 Java原教旨主义者的恐怖! 😉
有趣的是,这是我工作的惯例……可能是因为主要的初始开发者来自MFC世界! 😀

这只是你自己的风格,没有什么坏的风格代码,没有一个好的风格代码,只是区别我们的代码与其他人。