团队内部冲突的Java样式


12

我是Java开发团队的一员,截止日期为6周。这需要非常非常快地编写大量代码。但是,我们的开发团队具有不同的编码风格。从名称约定到抽象方法的所有内容在我们的团队中都不同。有人知道任何指示Java“标准”的文件吗?

为了澄清,我想知道是否有一个组织会规定例如变量和函数的正确命名约定。这是至关重要的,因为在如此短的期限内,我们不能花时间尝试理解彼此的代码。

Answers:


18

有这样一个组织:Sun / Oracle本身。该文档称为Java编程语言的代码约定,它描述了您需要的大多数约定。只要所有人都同意阅读并遵循其建议即可。


3
这是一个众所周知的std,但不要害怕在团队同意的情况下偏离它。例如,将宽度限制为80个字符可能会很痛苦。
马丁·维尔堡

1
@MartijnVerburg限制可以提示您将方法重构为方法和类,以避免深度缩进。

如果您找不到自己的协议,这是一个约定,并且可能是一个合理的后备,但是顾名思义,它并不指示-这是一个约定。
用户未知

@userunknown你是对的。我什至不同意所有约定。但这是一个很好的折衷方案,因为有OP的时间表。
Andres F.

8

我真的在安德烈斯(Andres)的答案上贴上标签,并专注于统一格式化Java代码的方面。

如果使用的是Eclipse,则可以将其Java格式化程序设置为自动格式化为Java标准。Eclipse格式化程序还具有其他有用的设置,例如每行字符(即,在换成新行之前每行有多少个字符)以及许多其他设置。每行的字符标准化使比较不同开发人员编写的代码更加容易,而没有空格和换行符之间的很大差异。

最后,使用Eclipse,在完成所需的所有设置后,将格式化程序导出为文件,团队中的每个成员都可以导入。因此,如果您使用的是Eclipse,我强烈建议您全面研究它将自动为您格式化和代码编辑的所有选项,然后与整个团队共享设置。

我假设其他主要的Java IDE(IntelliJ和Netbeans)具有导出格式设置的类似功能。


2
+1好答案!您还可以安装Checkstyle之类的插件,并在违反约定时警告您。
Andres F. 2012年

我们也这样做。首选项-> Java->编辑器->保存选项,并在保存时启用格式。主要原因是确保受格式影响的源代码行尽快发生,以使版本控制历史记录尽可能清晰(再次与diff相同)。

是的,我最近也开始这样做。我唯一不确定的是,我在保存选项中选择了“删除未使用的私有变量”。因此,在执行TDD时,我经常发现变量消失了,因为在使用代码之前就已经保存了代码。但是除此之外,此选项非常有用。
山姆·戈德堡

6

这种[不同的编码样式]是至关重要的,因为在如此短的截止日期之前,我们不能花时间尝试理解彼此的代码。

其实。这不是最重要的。

担任顾问30年后,我从许多客户那里阅读了很多代码。重要的是要注意,每个客户(通常在客户组织内)都有不同的样式。

阅读了很多样式后,我学到了这一点。

风格不重要

请专注于编写始终有效的代码,并编写证明其始终有效的单元测试。

交付有效代码后,如果没有足够的错误修复和安装增强功能,则可以对其进行修饰。


也许没关系,但是它也很不错,而且很容易做到。
凯文(Kevin)

1
样式无关紧要,但是一致性很重要。风格不一致会导致软件维护困难得多。
Jesper'2

5
@Jesper:“风格不一致会使软件的维护变得“ 有点困难”。一点也不难。不透明,糟糕,错误的代码很难维护。工作代码中的样式不一致就是样式不一致。有些人有口音,您必须多听。不一致的风格只不过是不同的区域(或民族)口音。
S.Lott

1
在全球范围内,风格并不重要,但在一个团队保持一致的风格很重要。它不会建立或破坏一个项目,但是如果要保持一致与不保持一致一样容易,为什么不继续并保持一致呢?您的代码至少会好一点。
布莱恩·奥克利

1
“您的代码将处于最佳状态 ”或“略有改善”。是的,这几乎是零成本,而且肯定是零风险。但。100%的测试覆盖率远远超出一致性。
美国洛特

2

不必担心选择一些完美的通用标准。您所需要做的就是让您的团队同意一项标准并坚持下去。如果需要,请自己化妆,但要保持一致。

一致性改善了协作,协作改善了代码。

即使实际的一致性没有帮助,但您的团队共同努力达成协议这一事实也是一件好事。他们无法同意像编码约定这样简单的内容,这表明可能存在更大的团队合作问题。


0

上面提到的Sun Java CC不仅已有13年的历史,并且其中一些规则已经过时(例如每行80个字符),而且除了最通用的命名约定(类的大写字母,大写大写字母)之外,它没有定义命名约定。用于静态最终变量等)。

您需要为不同类型的类(例如DAO,EJB,实体)定义自己的标准,无论使用什么。Sun Java CC就像一个抽象基类,意在扩展:)


我同意Sun的Java CC有点老,但这只是一个起点。我认为OP不会浪费很多时间来定义自己的CC,否则他会这么说的!(顺便说一句,在我目前工作的地方,他们使用Sonar插件,该插件配置为强制执行80个字符的限制-因此该规则仍然有效,并且在某些商店中适用)。
Andres F.

除了其他原因,可读性也是一个因素。跨线扫描远比向下扫描要低得多。使用格式正确的代码,您可以快速扫描无关的代码。
BillThor 2012年

如果您遇到每行80个字符的问题,则可能是标识符的长度过长,或者在单行中放置了太多的字符。前者很愚蠢(您能否将要旨精炼成低于这个水平?)而后者则表明迫切需要重构。保存时自动格式化非常棒,因为您不再需要担心格式化。该软件为您处理。
Donal Fellows,2012年

@DonalFellows是的,在这个时代,80个字符的限制是为了提醒您进行重构,而不是因为终端屏幕很小。
Andres F. 2012年

0

就像其他人在这里提到的那样,您可以在线搜索Java的几种流行“样式指南”之一,并说服团队中的每个人坚持使用它们。您最喜欢的IDE中的一些代码检查工具可能会在您不这样做时提醒您。

但是,有时涉及政治。我曾经遇到过这样一种情况:即使有人提到需要标准化,团队中最资深的开发人员仍会继续这样做。在这种情况下,观察他的代码风格并跟随他可能会更好,因为他可能最了解代码库和要求,并且即使他很困难,您也不想浪费时间踩他的脚趾。这是我们其他人在特定情况下所做的,我很不情愿地遵循。

因此,考虑您的情况也很重要。


这是哪个国家 听起来像是一件文化事。

@ThorbjørnRavnAndersen他的意思是说,人们在“长期从事的工作中”会抵制变化。从这个意义上讲,政治只是“办公室政治”
Robotnik '02

0

鲍伯叔叔在他的《清洁代码》一书中展示了一种更现代和最新的编码风格。不幸的是,它不包含任何项目列表。您必须阅读它。他对自己说,要了解他的约定,您必须阅读他的代码。鲍勃叔叔无疑是一个机构。无论如何,这本书都是一本非常好的书,所以即使现在为时已晚,也请尽快阅读。


0

在代码中真正重要的是较低的循环复杂度,较小的范围,较高的内聚性和表达标识符的选择。有了这些,代码就变得易于掌握,并且这样的代码很好。

我建议您研究Spartan编程

大多数编码标准都告诉您如何使写得不好的代码看起来漂亮,并且大多数有关“编码样式”的讨论实际上都是关于格式化的。代码格式化是关于可视地表示您的代码结构。它是琐碎且可自动化的,几乎没有任何代码风格,因为编码风格与您如何表示代码结构无关,而与代码结构有关。
关于命名约定,也有很多宗教战争,尽管实际上,它们只是解决不良设计的工具。一个名字很好,只要能说明它的意思。范围越小越清晰,选择这样的名称就越容易。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.