Quora:代码质量和发展速度可以兼得

标签: quora 代码 质量 | 发表时间:2015-08-11 00:03 | 作者:
出处:http://news.cnblogs.com/

在项目开发中,代码质量与代码开发速度一直是两个互斥的参数。维护高质量的代码有助于提高项目长期开发速度和维护代码的长期安全与稳定。然而,高质量的代码通常需要消耗大量的资源来维护,且会使短期的产品开发周期变长。因此,项目开发团队不可避免的需要在低代码质量高开发速度和高代码质量低开发速度中作出选择。而为了让产品尽快上市,多数公司会选择放弃长期利益而采用前一种方式。那么,究竟有没有办法打破这种二选一的局面呢?近日, Quora 就分享了该网站在维护高质量代码库的同时,保持代码迅速发展和更新的经验。接下来,本文就 Quora 的经验进行介绍和分析。

代码质量维护的目标

Quora 的工程经理 Nikhil Garg 表示,维护高质量代码时,开发团队需要明确其保持长期快速发展的目标。为此,Quora 在维护代码质量时,提出了四个关键性的原则:

  • 代码应该易于阅读和理解
  • 代码的不同部分应该满足不同的质量标准
  • 尽量减少维护代码质量的开销
  • 代码库已经保持一致

在这些原则的指导下,Quora 分别在代码编写阶段、审查阶段、测试阶段和代码清除阶段进行了努力。

代码编写阶段

首先,在代码编写阶段,Quora 开发了 Qlint 工具进行规则检查。除了各种语言的语法风格指导方针,Quora 还有保证代码质量的准则以及如何构建模块以减少阅读时间的手册。然而,对于代码编写人员,保证代码遵循所有相关的原则十分困难。这就容易导致代码需要不断的进行修改,既影响代码质量,又减缓工程进度。为此,Quora 又开发了 Qlint,用于代码的静态检查。而且,Quora 公司把 Qlint 与 Vim、Emacs 和 Sublime 等编辑器进行了完全集成,能够为违反规则的情况提供直观的视觉反馈。最后,Qlint 已经与 push 流程、代码的编写风格规则和 Phabricator 集成在一起。所有这些都能够在保证很小开销的情况下增加代码的一致性和质量。

代码审查阶段

其次,在代码审查阶段,Quora 采用了提交后代码审查的方式。正如 陈皓和玉伯最近所讨论的,代码审查是一个很容易拖慢工程进度,并严重影响代码质量的工作。就如何进行代码审查,两位技术大牛进行了激烈辩论。由此可见,这是一个充满争议的地方。Quora 基于对设计师的和代码审查工具 Phabricator 的信任,选择了提交后审查的方式。这就意味着开发人员可以先提交代码,继续进行其他工作或者继续代码的修改。在 Quora,一天大概 50 人次提交 187 次的代码改动。专门的代码审阅人员会之后进行复杂的审查工作,包括正确性、隐私保护、性能、架构、重用性以及代码风格等六个方面。

一般而言,Quora 会要求代码审查工作需要在一周内完成。而实际情况下,大部分的代码只需要1-2 天即可完成审查工作。一周时间只是更多的增加审查人员的时间灵活性。这种审查方式既可以保持开发人员不断的推进开发工作,同时又让审查人员可以选择比较好的时机进行复杂代码的审查。从而,在保持开发速度的同时,网站还能够保证代码的质量。当然,对于涉及用户隐私的代码、包含公共函数的代码以及可能会引起宕机的代码等关键性代码,Quora 还是会采用提交前审查的方式。

至于审查人员方面,Quora 实现了一个简单的系统,来指定代码的审查人员。除了代码提交者之外,该系统会根据一些内置的规则,自动挑选数据专家等合适的人选。这一系统既减少了代码开发人员寻找审查人员的工作量,同时又能够有效保证审查的质量,为代码长期快速发展贡献了一份力量。

代码测试阶段

然后,在测试阶段,Quora 编写了基于 nosetests 的测试框架、若干用于测试自动化的工具以及测试编写指南。作为产品开发流程中非常重要的一个环节,测试对代码质量和产品发布速度都有着很大影响。为了提高测试的覆盖率,产品测试过程通常需要大量的功能和 UI 测试程序。Quora 投入大量精力搭建了专门的测试框架,用于减少测试程序的编写代价。而且,该网站也开发了一些工具来使得测试自动化。目前,Quora 的测试服务器能够在五分钟内运行完所有的测试集。此外,‘test-local’工具能够鉴别并执行只与发生改变的文件相关的测试程序。与代码审查类似,Quora 针对不同类型的代码改变会设置不同的测试标准和测试覆盖率。由此,Quora 测试代码能够很好的保证质量和更新速度。

旧代码清理阶段

最后,在旧代码的清理阶段,Quora 会定期组织废弃代码的清理工作。一个快速发展的公司总是需要各种各样的想法。有些想法最终被采纳,而另外一些被慢慢遗忘。对于这些被遗忘的代码,Quora 定期组织清理工作周。在这段时间内,一个专门的团队或者整个公司会专门进行代码的清理工作。而且,针对不同的清理难度和代码对未来的影响,Quora 团队会对不同的模块设置不同的清理优先级。

通过以上介绍可以看出,Quora 非常重视做好各个环节和细节的工作。通过详细的指导方针和手册、自动化的流程和各种精致的工具,该网站建立了良性发展的系统,达到改善长期发展速度的目的。未来,Quora 会继续设计更多的工具和更完善的系统,来适应网站的发展需求。Quora 的发展经验也为其他公司提供了很好的借鉴。

本文链接

相关 [quora 代码 质量] 推荐:

Quora是如何维持高质量代码的

- - ITeye资讯频道
一个高质量的代码库可以加快长期开发的速度,因为它会使得迭代、协作和维护更加容易. 在Quora,我们十分重视代码库的质量. 除了会取得收益之外,要维护高质量的代码,会带来一大笔间接费用,还会牺牲实际开发周期. 很多人发现,实际产生的收益很难抵消这一间接费用,这时人们会面临两个选择:要么以低质量代码提升开发速度,要么维护高质量代码而牺牲开发速度.

Quora:代码质量和发展速度可以兼得

- - 博客园_新闻
在项目开发中,代码质量与代码开发速度一直是两个互斥的参数. 维护高质量的代码有助于提高项目长期开发速度和维护代码的长期安全与稳定. 然而,高质量的代码通常需要消耗大量的资源来维护,且会使短期的产品开发周期变长. 因此,项目开发团队不可避免的需要在低代码质量高开发速度和高代码质量低开发速度中作出选择.

Google+源代码泄露Google可能在做类似Quora的Google Experts,整合Google Voice,增加留言墙等

- kxxoling - 36氪
开发者Matt Mastracci在浏览Google+源代码时发现了很多隐藏的功能,为此他写了一篇文章,他发现:. Google+ Wall(留言墙). 很像Facebook留言墙,基本上是用户A可以在用户B的个人档案页面留言,而不必非在自己的Timelin中增加一条消息. Google Experts(专家).

使用 JSLint 保证 JavaScript 代码质量

- zhibin - IBM developerWorks 中国 : Web development : Articles,Tutorials
随着富 Web 前端应用的出现,开发人员不得不重新审视并重视 JavaScript 语言的能力和使用,抛弃过去那种只靠“复制 / 粘贴”常用脚本完成简单前端任务的模式. JavaScript 语言本身是一种弱类型脚本语言,具有相对于 C++ 或 Java 语言更为松散的限制,一切以函数为中心的函数式编程思想也为开发人员提供了更加灵活的语法实现.

编写高质量的Java代码

- - 研发管理 - ITeye博客
Java 开发通用方法和准则. 不要在变量和常量出现易混淆字母:int i=1l;. 三元操作符的值类型务必保持一致;. 避免带有变长参数的方法重载:Java 5 引入了变长参数,varags, 用…表示,变长参数必须是最后一个参数,一个方法不能有多个变长参数;. 别让null和空值影响到变长方法,主要出现在在变长方法的重载;.

iOS编写高质量代码

- - SegmentFault 最新的文章
这是一篇读书笔记,快速记录各种高效率编程的技巧和方法. 这些方法是为了提升编码质量和效率,高质量代码利于后期的维护和更新,毕竟不能一份代码到永远. 由于是记录形式,当然不能把整篇内容都写下来,只记录关键性的内容,长期更新. Objective-C使用了消息机制代替调用方法. 区别:使用消息结构的语言,其运行时缩影执行的代码由运行环境来决定.

Quora 用了哪些技术 ?

- CMGS - DBA Notes
很多团队都在学习、研究 Quora. 前段时间看到这篇 Quora's Technology Examined ,阐述了 Quora 的技术架构,有一些值得关注的信息,记录并分享一下. Quora 大量使用 Amazon EC2 与 S3 服务;操作系统部署的是 Ubuntu Linux,易于部署和管理;静态内容用 Cloudfront.服务分发,图片先传到 EC2 服务器,使用 Pyhon S3 API 处理后后传到 S3.

Quora使用到的技术

- CMGS - 酷壳 - CoolShell.cn
以前向大家介绍过Stack Exchange的系统架构和Facebook的系统架构,今天和大家说说Quora的. 本文主要参考了Phil Whelan的这篇文章《Quora’s Technology Examined》. 关于Quora是个什么网站我就不多说了,国内对他的C2C网站叫“知乎”. 我们还是来看看Quora的技术吧.

Quora 入职第一天

- Wenhuan - 爱范儿 · Beats of Bits
现在的移动互联网发展如火如荼,各种 Startup 项目和公司层出不穷. 他们对于人才的争夺战也愈加剧烈,各种福利、软硬件环境都成为吸引人才的要素. 之前我们介绍过 Twitter 入职的一些情况,而上周六刚刚加入 Quora 的工程师 Kah Seng Tay 介绍了他在 Quora 的新生活. 入职时 Lisa Moreno 用绽放的笑容接待了他,并给了他办公室所有门的钥匙以及一些需要填写的入职资料.

Quora 的美妙世界

- 坏人 - 爱范儿 · Beats of Bits
在 Facebook 和 Twitter 之外,Quora 是 SNS 网络中的另一个真正的亮点. 我们曾经分析过它流行之下的隐忧所在,也探究过在它带动之下其他问答网站的新尝试与创新,我们甚至也带大家一起八卦了一下入职 Quora 工作的情景. 日前数据分析公司 KISSmetrics 在一名 Quora 的活跃用户 Semil Shah 帮助下,绘制了一幅信息图,从中我们可以了解到 Quora 一些很有趣的细节,比如人们如何使用 Quora、Quora 的用户增长率等等.