标签 代码评审 下的文章

应用C语言代码风格检查

代码风格(style)一直是一个见仁见智的问题,但是对于一个团队而言,如果能在代码风格上达成一致,显然无论对团队还是对个人来讲都是大有裨益的。

在这方面我们也曾做过努力,包括在团队中引入astyle工具,并在astyle的代码美化风格配置上,团队成员也集体达成过一致。但是在开发过程中还是出现了一些问题。最主要的就是对astyle工具使用不足:一些同事总是记得不停地写代码,但却忘记了按约定好的风格要求写代码或按照要求通过工具执行代码美化。

为了尽可能地保证提交到代码库中的代码都是风格良好的(也可以在代码评审时间接减少评审者提出有关代码风格问题而耗费的工作量),我们将代码风格检查加入到代码构建的关键流程中去,这样可以起到一个提醒大家注意代码风格的作用。与Java等语言相比,C语言的代码风格检查工具相对较少且工具的功能也很有限。我Google了半天才找到一款简单且实用的工具-c_style_check.py。这个检查脚本使用正则式匹配的方法按照你制定的规则对源码文件进行校验,如果发现不符合规则的代码行,则给出提示。另外考虑到我们内部的要求,我对这个脚本也作了一些改造,增加了一些校验规则,并把最新的脚本放到了这里

目前的脚本较为简单,无法检查你的所有风格要求,不过它还是能检查出一些我们想要的不符合风格的地方。比如:不允许使用TAB字符、每行最大长度限制、在常见操作符(比如+,-,*,/,>,<等)两侧要添加空格、在){之间要求添加一个空格以及要求采用C传统注释方式等等。

另外,Google提供了一个强大的按照Google C++风格进行检查的代码检查器 – cpplint.py。不过尚没有C代码风格检查工具推出,不过cpplint.py这种级别的检查器是我们努力的方向。后续也许会逐步改进c_style_check.py

借开源实现你的雄心壮志

本文翻译自"Fulfill Your Ambitions with Open Source",来自于《程序员应该知道的97件事》一书中的某个章节。

如果你在工作中没能开发那些可以实现你雄心壮志的软件,那你将有很不错的机会。也许你正在为一家庞大的保险公司开发软件,然而你实际上却宁愿供职于Google、Apple、Microsoft或是你自己初创的公司去开发下一个对世界影响巨大的软件。如果你去为你根本不关心的系统开发软件,那你永远也实现不了你心中的抱负。

幸运的是,你的问题有一个答案:开源。那里有成千上万的开源项目。其中许多项目的开发都十分活跃,可以提供你想要的各种软件开发经验。如果你有了开发操作系统的想法,那就从十多个操作系统项目中选择一个加入吧。如果你想从事音乐软件、动画制作软件、加密技术、机器人技术、电脑游戏、大型网络在线游戏、移动电话或任何一类软件的开发,你肯定可以找到至少一个开源项目可以满足你的兴趣。

当然,这世上没有免费的午餐。你必须愿意牺牲一些你个人的自由时间,因为你在日常工作中可能无法从事一个开源视频游戏的开发 – 你还要为你的雇主负责。此外,只有极少数人可以从对开源项目的贡献中获得收入 – 有些人得到了,不过大多数人没有。你应该放弃一些你的自由时间(少玩些视频游戏,少看些电视也没啥大不了的)。你在开源项目上的工作越努力,你就会越快地实现你作为程序员的抱负。考虑你的雇佣合同也同样重要 – 一些雇主可能会限制你可以贡献的内容,即使是在你自己的自由时间里。此外,当你的工作涉及到版权,专利,商标及贸易机密时,当心侵犯知识产权法。

开源为那些激情十足的程序员们提供了巨大的机会。首先,你可以看到其他人是如何实现一个让你感兴趣的解决方案的 – 你可以通过阅读其他人的源代码学到很多东西。第二,你向这个项目贡献你的代码以及想法 – 不是所有你的好想法都将被接受的,不过其中的一些可能被接受。通过开发解决方案以及贡献代码你就可以学到一些新东西。第三,你会遇到那些对此类软件拥有和你同样热情的卓越的程序员 – 这些因开源项目合作而形成的友谊可能会持续一生。第四,假设你是一个称职的贡献者,你将在这门让你感兴趣的技术上积累许多实际经验。

开始参加开源项目十分容易。有很多有关你需要的工具(例如:源码管理工具,编辑器,编程语言,构建系统等)的文档资料。找到第一个你要参与的项目,学习这个项目所使用的工具。多数情况下有关这些项目自身的文档很少,不过这也无关紧要,因为学习开源项目的最好的方法就是自己研究这些代码。如果你想加入,你应该帮忙编写文档。或者你可以自愿编写测试代码。虽然这听起来也许不那么让人兴奋,但事实是为其他人的程序编写测试代码比几乎任何其它方式都能更快速地了解这个软件。编写测试代码,优秀的测试代码。找Bug,提交修正建议,结交朋友,参加到那些你喜欢的软件开发工作中,实现你软件开发的雄心壮志。

by Richard Monson-Haefel

如发现本站页面被黑,比如:挂载广告、挖矿等恶意代码,请朋友们及时联系我。十分感谢! Go语言第一课 Go语言精进之路1 Go语言精进之路2 商务合作请联系bigwhite.cn AT aliyun.com

欢迎使用邮件订阅我的博客

输入邮箱订阅本站,只要有新文章发布,就会第一时间发送邮件通知你哦!

这里是 Tony Bai的个人Blog,欢迎访问、订阅和留言! 订阅Feed请点击上面图片

如果您觉得这里的文章对您有帮助,请扫描上方二维码进行捐赠 ,加油后的Tony Bai将会为您呈现更多精彩的文章,谢谢!

如果您希望通过微信捐赠,请用微信客户端扫描下方赞赏码:

如果您希望通过比特币或以太币捐赠,可以扫描下方二维码:

比特币:

以太币:

如果您喜欢通过微信浏览本站内容,可以扫描下方二维码,订阅本站官方微信订阅号“iamtonybai”;点击二维码,可直达本人官方微博主页^_^:
本站Powered by Digital Ocean VPS。
选择Digital Ocean VPS主机,即可获得10美元现金充值,可 免费使用两个月哟! 著名主机提供商Linode 10$优惠码:linode10,在 这里注册即可免费获 得。阿里云推荐码: 1WFZ0V立享9折!


View Tony Bai's profile on LinkedIn
DigitalOcean Referral Badge

文章

评论

  • 正在加载...

分类

标签

归档



View My Stats