大家都知道google的开源项目有很多,不过我观察过一些开源项目,觉得代码质量就是这家最好了。这些“教条”式规定的背后是是来自于常年工程经验积累上的理性思考。

为什么好?主要有以下几点:

1.规范,就像一个人写出来的。
2. 抽象但又不过度抽象。
3.算法实现上不会晦涩难懂,需要有trade off的功力。

Google 的这套C++ Style Guide 直接影响了不少开源项目。它里头还有一条独树一帜的传参规范是:输入用引用,输出用指针,输入参数必须在输出参数之前,即使是新增的。这条规范的逻辑是什么。了解、背诵规范是没什么意义的,我们得理解规范背后的逻辑然后融入到设计过程中。这个小问题也没有标准答案,但起码可以分析出几个所以然:
- 参数写反了可以从静态检查/编译期发现
- 阅读代码时不用看函数声明就对 I/O 一目了然

以上说到底还是可读性高,也能快速定位编译期的问题。

当然,实际团队开发中很难也没必要考量这些细节,但可以此了解一个人的品味和逻辑。代码质量确实跟产品和公司的成败没什么特别大的关系,只是我们作为工程师,就应该从自己的角度去追求自己的东西。啊,这是艺术。

google定制了很多编程语言的规范:(以下是中文版)

http://zh-google-styleguide.readthedocs.org/en/latest/

关于google的C++ coding style的更多相关文章

  1. Google's C++ coding style

    v0.2 - Last updated November 8, 2013 源自 Google's C++ coding style rev. 3.274 目录 由 DocToc生成     头文件   ...

  2. Google C++ Coding Style 学习笔记

    写在前面:最新公司马上就要开始开发一款视觉产品,工程量较大,且需要对客户提供可以二次开 发的SDK,整个项目用C++编写. 这就对代码质量提出了非常高的要求,同时,如何设计出优雅稳定的API也是相当大 ...

  3. Google coding Style Guide : Google 编码风格/代码风格 手册/指南

    1 1 1 https://github.com/google/styleguide Google 编码风格/代码风格 手册/指南 Style guides for Google-originated ...

  4. python coding style guide 的高速落地实践

    python coding style guide 的高速落地实践 机器和人各有所长,如coding style检查这样的可自己主动化的工作理应交给机器去完毕,故发此文帮助你在几分钟内实现coding ...

  5. [CPP] Coding Style

    C++ Coding Style C++很多强大的语言特性导致它的复杂,其复杂性会使得代码更容易出现bug.难于阅读和维护. 由于,本人有一点点代码洁癖,所以依照Google的C++编程规范<G ...

  6. python coding style guide 的快速落地实践——业内python 编码风格就pep8和谷歌可以认作标准

    python coding style guide 的快速落地实践 机器和人各有所长,如coding style检查这种可自动化的工作理应交给机器去完成,故发此文帮助你在几分钟内实现coding st ...

  7. 编程风格(Coding Style)要求

    编程风格(Coding Style)要求2.1.1 文件(1) 每个模块(module)一般应存在于单独的源文件中,通常源文件名与所包含模块名相同.(2) 每个设计文件开头应包含如下注释内容:? 年份 ...

  8. Linux 内核Coding Style整理

    转载:http://www.cnblogs.com/wang_yb/p/3532349.html 总结linux内核开发的coding style, 便于以后写代码时参考. 下面只是罗列一些规则, 具 ...

  9. (转帖) 有限狀態機FSM coding style整理 (SOC) (Verilog)

    来源:http://www.codesoso.net/Record/101092_95120_21.html 来源:http://www.cnblogs.com/oomusou/archive/201 ...

随机推荐

  1. VC的话有必要认真听,但却不用急着照办

    本文来自著名风险投资人 Fred Wilson 的博客 AVC,他在 2016 年 8 月 23 日的这篇文章<Understanding VCs>里用简单的语言揭秘了 VC(风险投资人) ...

  2. zabbix报警把特定的应用集发送给developer

    1.创建新的action 2.创建新的develop用户 3.需要删除组不然会给组里所有人发

  3. Linux企业级项目实践之网络爬虫(18)——队列处理

    所有的URL都接受管理,并在此进行流动.URL从管理模块的存储空间开始,一直到最后输出给磁盘上的URL索引,都由此部分调度.首先,给出URL调度的一般过程,如图所示.其流程的各个具体操作,后面详述.要 ...

  4. windows对象总结

    这篇文章是对windows对象的总结,在winows编程中,windows对象,句柄是一个基本概念,理解这些概念有助于后面的windows编程学习.文章的形式还是以解答问题的方式来组织. 注:在文中, ...

  5. html p标签换行问题

    /*p标签自动换行*/ p{ word-wrap:break-word; word-break:normal; } /*p强制不换行*/ p{ white-space:nowrap; } /*块级元素 ...

  6. JS字符串拼接优化

    // 请把以下用于连接字符串的JavaScript代码修改为更高效的方式 var htmlString = ‘ < div class=”container” > ’ + ‘ < u ...

  7. 编写高质量代码改善python程序91个建议学习01

    编写高质量代码改善python程序91个建议学习 第一章 建议1:理解pythonic的相关概念 狭隘的理解:它是高级动态的脚本编程语言,拥有很多强大的库,是解释从上往下执行的 特点: 美胜丑,显胜隐 ...

  8. (转)iOS7人机界面设计规范 - 目录

    英文原文出自苹果官方的iOS7设计资源-iOS人机界面设计规范(预发布版本),由C7210自发翻译,并首发于Beforweb.com.如需转载,请注明译者及出处信息. UI设计基础 为iOS7而设计 ...

  9. Android TextView中实现点击文本超链接(无下划线)的封装类

    android中有的时候须要在TextView上设置一些超链接,点击这些超链接时进行一些操作.比如新浪微博上的一些keyword,点击时会跳转到对应的页面. 怎样实现我们就直接看源代码吧. /** * ...

  10. Visual Studio 命中断点时 打印信息

    打印时间: 开始: {DateTime.Now.ToString()} 结束: {DateTime.Now.ToString()} 搜索 复制