编码风格不是编码规范

转载 2013年12月05日 14:38:33

     本文转载自:http://kb.cnblogs.com/page/181283/

     英文原文:The conventions we follow

     我并不认为程序员是一个情绪特别丰富的群体。但有一些事情却能很容易刺激程序员的神经,那就是代码格式和布局(formatting and layout of code)。如果看到一个函数的括弧在同一行上没有闭合,我的眼睛会喷血。如果看到有人没有恰好的在两个函数间留一空行,我的小腿会抽筋。但重点在这里——除非是在家里开发自己的业余爱好软件,我的这些个人喜好其实是无关紧要的。同样,作为一个团队中的一员,你的个人编程喜好也应该放到一边。

  编码风格(coding style)很容易会和编码规范(coding standard)混为一谈,因为这两个词经常会被人换着使用。我认为,编码规范同时包括了编码风格和其它规范,不仅仅指代码格式。例如,像“返回成功/失败的函数应该用一个整数作为返回值”,这样的规则不属于编码风格。在这篇文章中,编码风格简单的指一个描述如何格式化代码的说明。编码风格中的规则通常会涉及到下面这些主题:

  • 缩进
  • 空格的使用
  • Tab的使用
  • 注释
  • 命名习惯
  • 代码行长度
  • 语言特点风格,例如是否使用可有可无的分号。

  编码风格都是为特定的编程语言制定的,可以把它们看作“我们共同的约定”。如果在你的公司里,在你在时,在这些事情正在制定完成,你可以提出你的喜好,那你是幸运。但通常情况是,一种编码风格在其生命期里看着无数的程序员来了又走了。在我的眼里,遵守编码风格有下面三个主要好处:

  1. 遵守编码风格使代码更容易维护

  今天由这个程序员实现的软件,明天可能需要另外一个程序员维护。如果所有代码中大家使用同一种编码风格,这另外一个程序员快速的扫一眼陌生的代码,就能根据大家约定的编程习惯,推断出代码的作用。如果编码风格中指明常量应该全用大写字母表示,那么,当看到一个全是大写字母的变量时,你就能推断出它是常量。同样的,如果编码风格中规定包的引入要有顺序,那你立刻就能知道去哪里找这些包。这使得代码很容易维护。

  2. 编码风格使形成代码集体所有制

  代码集体所有制意味着全体程序员要负责所有代码。集体所有制的作用很大,它能有效的增大巴士因子——一个项目能承受多少个程序员被车撞了而不影响项目的正常进行。在整个代码库中坚持延用一种常用的编码风格,所以程序员都能更容易的理解、维护。

  相反,如果在一个大型的软件项目中,每个程序员都使用自己的编码风格,最终会引起一场维护版图的战争,就像动物世界里我们的这些朋友:

气味记号(也称喷洒尿液或领土记号)是动物标记自己领土范围的一种行为。通常是通过留下具有强烈气味的物质来完成,很多时候是通过在领土中突出的物体上小便。- 维基百科

  个人编码风格就像是狗撒尿,留下自己的势力记号。他们在代码中留下自己的符号,在程序员之间创造壁垒。

  3. 编码风格能消除那些长久的纷争

  每个程序员都对编码风格有强烈的自我认同。这种感觉深植于每个人的自负中,每当和同事遇到是否应该在关键词周围使用空格时,这种讨论很容易升级而僵持不下。但是,静下来想想——这真的无所谓。不管是不是在关键词周围使用了空格,只要能达成一致,大家都能从中获得易维护和集体所有制的好处。在这种情况中,闭着眼睛,遵循一种编码风格就行了。

  你不需要喜欢这种编码风格。如果你不喜欢里面的某条规定,那就骂几句这个文档,只向文档发脾气,就像人类迁怒于上帝。然后还是按照约定做事。这样做更具有建设性,比无休无止的吵论这些不重要的事情好的多。

  有了一套编码风格并不一定会给你带来好处——除非大家都遵守。有些时候,你并不一定需要手工去调整代码。很多的程序编程器,例如Eclipse,能配置帮你格式化代码,使其符合编码风格。即使你的编辑器没有这种功能,很多其它工具也能够自动按照某种风格格式化一个文件。在我们的团队中,我们使用indent 和 uncrustify 工具。我还听说过一些其它好东西,比如ReSharper。那些不能被自动实施的规则,例如命名习惯,可以在代码审查的过程中落实。

Android编码规范风格指导(翻译)

原文地址:http://source.android.com/source/code-style.html 有很多为Android开源社区贡献代码的程序员,每个人都有不同的代码风格,为此googl...
  • leirenbaobao
  • leirenbaobao
  • 2015年04月28日 21:00
  • 771

规范编码的重要性

最近在做一个二期的项目,主要任务是用Ext写js来画界面。由于是新手,所以都是仿照已有的界面进行修改的。修改时不是很严谨,原界面中存在的很多东西:如JSP页面导入的JS,JS页面的一些控件,尽管在新页...
  • u013178480
  • u013178480
  • 2017年03月23日 16:04
  • 299

JAVA-编码规范-代码风格-命名

引言: 很多java规范,内容偏向于对排版的要求,对java语言特性使用上的注意事项描述较少,为了能帮助我们合理的使用java语言,规避语言陷阱,特发此专题博客。 代码总体原则: 1:清晰第一。...
  • cuigaochong
  • cuigaochong
  • 2015年09月23日 11:10
  • 3354

linux内核代码风格(中文)

Chinese translated version of Documentation/CodingStyleIf you have any comment or update to the cont...
  • ChrisNiu1984
  • ChrisNiu1984
  • 2011年07月20日 13:45
  • 2324

Windows客户端C/C++编程规范“建议”——风格

本文涉及C++编程风格规范的相关建议
  • breaksoftware
  • breaksoftware
  • 2014年09月07日 16:19
  • 2609

谈谈编码风格与编码规范

今天看了一篇文章,是关于编码风格的,想起来之前做项目的时候因为命名引起的一些问题,然后大家是如果不情愿的修改了已经写好的代码,然后最近一直写英语,对计算机的学习暂时告了一个段落,而且英语总结又无法公开...
  • laner0515
  • laner0515
  • 2013年08月07日 21:05
  • 1340

编码规范——程序员的自我修养(代码样例为lua代码或c++代码)

------------------------------------ --命名部分(适用于lua代码及c++代码) ------------------------------------ ...
  • mywcyfl
  • mywcyfl
  • 2014年07月11日 23:46
  • 1852

Google 编码风格之命名规范(备忘)

参考链接:http://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/naming/ 通用规则:所有函数、...
  • Firehotest
  • Firehotest
  • 2016年07月22日 14:02
  • 3396

Qt的编程风格与规范

参考资料:https://wiki.qt.io/Qt_Contribution_Guidelines https://wiki.qt.io/Qt_Coding_Style https://wiki...
  • qq_35488967
  • qq_35488967
  • 2017年04月11日 16:22
  • 1321

谈谈良好的编码风格

能写出结构精巧的代码是一件令人羡慕的事情,能写出解决复杂问题模型的算法是一件令人羡慕而又佩服事情。虽然未必所有人能做到这些,但是每一个对代码有信仰的人至少要做到语法使用合理、代码简洁、逻辑清晰、变量的...
  • lanyuxinkong
  • lanyuxinkong
  • 2015年08月27日 16:26
  • 1721
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:编码风格不是编码规范
举报原因:
原因补充:

(最多只允许输入30个字)