高质量的代码 - 价值观

        在这个移动互联的时代,IT行业的节奏可以用飞快来形容。整个行业都希望自己身手敏捷,快速的将想法落地,然后快速迭代。天下武功为快不破,但是大家有没有这样的经历,在开发软件开始几个版本的时候感觉整个团队速度飞快、身手敏捷,但是随着功能越来越多你突然感觉自己慢下来了,而且越来越慢。那如何才能让团队持续的快呢?代码质量是其中的一个重要因素。我们将通过一系列的文章来阐述我们的对代码质量的理解。

        这是“代码质量”系列文章的开篇,大家可能会奇怪“代码质量”不应该讨论技术吗?怎么会讨论起价值观了?这其实要从人性开始说起了,其实我们所有人(也包括我自己)的内心都认为利益(注意这里的利益是中性的,可以理解为价值)才是我们行为的核心驱动力,这是人性使然。我自己理解整个社会的发展都是由利益(或价值)驱动的。大家有没有发现很多时候要坚持一样东西很难,但是如果这样东西能够给我们带来价值,我们就会自然而然的去做而不需要特别努力的坚持。

        编写整洁的代码不是件容易的事情,需要我们投入额外的精力和时间,尤其是项目面临压力的时候就更难坚持。这就是为什么我们需要在开篇讨论整洁的代码能给我们带来什么价值的原因。一旦我们深刻理解的这些价值,那么坚持编写整洁的代码就变得不在那么困难。因为你内心有一股强大的力量驱动着你。至于编写整洁代码的具体技巧,通过互联网你最终总是能够获得。当然在这系列文章中我们也会讨论一部分编写整洁代码的技巧。

       我们会从两个不同的视角来理解整洁代码的价值:攻城狮和企业。每一个视角的价值讨论都会从一个问题开始。攻城狮视角的问题是:我们编写代码是给谁看的?这时你脑子里面可能会跳出很多的可选答案:给机器(或CPU)看的?给编译器看的? 等等。

       我尝试着通过一个几乎每天都发生在IT圈的故事来回答这个问题。假设有这么一个场景:客户报了一个重要的Bug A,你的老大(项目经理)要求你去修复这个Bug。同时你老大对整个系统相对比较了解,所以他根据客户提供的信息大概估计问题出在A处(见图1),所以老大对你的期望是能够在两天之内完成。你觉得这是天上掉了个馅饼,这是给老大留下好印象的机会啊,于是乎你撸起袖子就开干了。所有的攻城狮都知道想要修复一个Bug必须先读懂和这个Bug相关的代码,对此你是有心里准备的。于是乎你开始尝试着去理解A+范围的代码,但是代码质量很差,你差不多用了一整天才理解A+范围内的代码,你不由鄙视写这烂代码的人。幸运的是最后你修复了这个Bug。由于没有自动化测试,你只好直接交给测试团队进行人肉测试。测试团队发现Bug A 确实修复了,但是却引入的新的Bug B,因为A+ 区域的代码和B+区域的代码耦合紧密。于是你很无奈的开始尝试修复Bug B,你开始努力的去理解B+区域的代码。这时你才发现噩梦才刚刚开始,因为你发现B+区域和C+区域的代码耦合,而C+区域的代码又和D+区域的代码耦合。你怕引入新的Bug你只好硬着头皮去理解这几个区域的代码,这时时间早已过去两天。你每天都加班到10:00才回家。到了第五天(周五)你还没有完全理解这几个区域的代码,更让你郁闷的是周五是你女朋友的生日,真是下雨偏逢屋漏(这时你不由想起了墨菲定律)。你是一个特别有责任感的人,最终你坚持修复了新引入的Bug,但是却没能抽出时间和女朋友一起过生日。你感到很没有成就感,老大可能还觉得你能力欠佳(两天的活干五天才弄完,还天天加班),女朋友觉得你的工作比她重要。你感到无比的委屈,心里忽然想起一个念头这是哪个孙子写的代码。你上SVN一查历史记录发现那几个区域代码是你和几个要好的同事两年前写的,你只能一声长叹(哎...)。

       上面的故事生动的告诉我们,我们编写的代码是给未来的你以及你的同事看的。我们设想一下如果整个系统拥有高质量的代码会怎么样?第一:A+区域的范围相对较小且容易理解;第二:A+, B+, C+, D+ 区域松耦合,即对每个区域修改的影响不容易传导至其它的区域。只有这样代码才能使你真正的快,使你获得期望的成就感和肯定,使你能够比别人更好的平衡自己的生活和工作。

      下面用两个IT大神的话来鼓励攻城狮们编写整洁的代码:

      任何一个傻瓜都能写出机器能懂的代码,优秀的程序员应该写人能懂的代码 —— Martin Fowler

      当你离开营地的时候,一定要让它比你来的时候更整洁干净 —— Bob 大叔 (引用美国童子军军规)

       上面我们讨论的整洁代码能给攻城狮能带来什么价值,那对于企业呢?我想这也需要从一个问题开始:软件的成本主要由哪几个部分组成?我想大家会很容易想到这个公式:软件成本 = 开发成本 + 维护成本。那它们的占比是什么样的呢?如果你问谷歌这个问题,绝大部分答案是:开发成本占比30%,维护成本占比70%。这和我们平常的认知和关注点是相反的,我们通常认为软件的开发成本才是主要的成本,但很多统计机构统计的结果显示维护成本才是占比较高的。这就需要我们重新去平衡开发成本和维护成本, 而平衡这两个阶段成本的最有效的手段就是在开发阶段编写高质量的代码。虽然这会导致开发成本有所上升,但是能够有效的降低维护成本,同时间接的使软件的整体成本降低。如果软件较复杂或开发周期长,高质量的代码甚至能够帮助降低开发成本,因为高质量的代码能够保证整个团队持续的快,持续的高效。

       我们一直认为提高代码质量的核心的是让大家认识高质量代码的价值,只有这样大家才会自我驱动的写高质量的代码、重构烂代码(让营地变得更整洁)。希望这篇文章能帮助大家认识到高质量代码的价值。代码质量是一个系列的文章,在后面的文章中我们会具体讨论编写整洁代码的技巧,敬请关注。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值