Java happens to be a really good language for a broad spectrum of topics.
Java只是碰巧成为了一门用途广泛的优秀语言。
——James Gosling(詹姆斯·高斯林,Java的创始人)
编码不仅仅是把代码写出来,还要求清晰地表达出编码者头脑中的逻辑,准确地传递到计算机中执行,同时也能够被其他编码者轻松阅读,而要实现这些目标,则要求代码有清晰、正确的思想,即编程思想。
编程思想是软件诞生的源泉,当它喷涌而发时,也是优秀软件诞生之时。
建议144:提倡良好的代码风格
代码的版面和样式比较多,每个项目组基本上都有自己的编码规范,大家都希望形成良好的代码风格,以便提高代码的可读性,方便生成维护文档,减少缺陷出现的几率等,在Java的开发中一般都是按照《The Java Language Specification》(即《Java编码规范》)来制定编码规范的,但是基本上每个项目组都会有一些自己的个性特征,我们不去评说哪一个代码风格优秀,哪一个风格较差,而是来分析一下优秀团队的编码风格应该具有哪些特征。
(1)整洁
不管代码风格的定义有多优秀,有多适合开发人员,如果代码结构混乱不堪,即使效率再高,也会使维护难以持续。我们知道,代码首先是给人看的,然后才是给机器执行的,对于机器来说,只要代码符合规范,不在乎其格式是否整洁、是否有缩进、是否有回车,只要代码正确就能正常运行,而人就不同了,没有缩进没有回车的代码基本上是不可阅读的。试想一下一个没有标点符号的文档,整篇就是一个段落,能读懂的基本上是天才(或许你会说古代的诗词就是没有标点符号的。确实,但它有韵律)。
(2)统一
从一个团队中诞生的代码应该具有一致的风格,要使用下挂式括号就全部使用下挂式括号,要使用tab缩进就全部使用tab缩进,要使用小驼峰方式命名就全部使用小驼峰方式命名,不要带有个人色彩的风格标识。这样可以让我们的代码看起来很职业,而不是一帮乌合之众产生的“稻草”式代码。
统一的代码风格还要求具有连贯性,我们应该在不同的模块、层级中使用相同的编码风格,而不能在展现层使用一种编码,在逻辑层又使用另外一种编码风格。一个项目的编码风格不应该因为所处的功能区不同而有所差异。当然,若使用多种异构语言开发项目,则可以考虑为不同的语言提供不同的规范。
(3)流行
一种潮流风行世界的时候必然有其诞生的原因(感冒也包括在内),一种编码格式的流行也必然有它存在的理由,我们完全可以借鉴流行的编码格式,没有必要对这种风格进行重塑,而且使用流行风格可以让新成员尽快融入项目,避免出现进入一个新环境而出现茫茫无助的状态。
不要让您的代码规范标新立异,独树一帜,跟随“风尚”也许是一种省事、省力、省心的最好编码风格。
(4)便捷
制定出来的编码规范必须有通用开发工具支撑,不能制定出只能由个别开发工具支持的规范,甚至是绑定在某一个IDE上。在小范围内独乐乐,可以提升代码的友好度,方便使用,但很难大范围内推而广之,特别是很难上升到工程级别。代码风格是为一个团队准备的,如果团队中就只有一个开发人员,基本上代码风格不会有太大差异,这是习惯和个性使然,但是如果团队中有多个成员,就需要防止给开发人员过度的自由了,不符合开发规范的代码要坚决予以重构,以使团队代码风格一致。
现在的项目中源代码逐渐增多,完全依靠人工来做代码走查很难查出问题,我们可以使用工具来统计代码,这里推荐使用Checkstyle,它可以自定义代码模板,然后根据模板检查代码是否遵循规范,从而减少枯燥的代码走查。