你们这些程序员,真得每天都在读代码吗?

点击上方“

CSDN

”,选择“置顶公众号”

关键时刻,第一时间送达!

你们这些程序员,真得每天都在读代码吗?

近日,外媒上的一篇文章震惊了我,它赤裸裸地写道:你们这些程序员们,真得每天都在读代码吗?多数人阅读代码的数量远远不够。

文中提到,在Peter Seibel撰写的“Coders at Work”一书中描述了这样一个矛盾的现象:“几乎所有的程序员都建议他人通过多读代码获得乐趣,但自己却往往做不到。”甚至他还直接向麻省理工学院计算机科学系教授 Hal Abelson寻求答案:

“我想更深入了解一下。像很多人一样,您也常常建议程序员应该多读代码。然而,当我问到您是因为读了哪部分代码而受到启发或感到娱乐时,您同其他人一样,回答说‘是因为您阅读了学生的代码’,而这是您的工作,‘在谷歌review代码’,而这同样是您的工作。从头到尾,这都听起来不像是您在某个夜晚心情愉悦地读一段代码的样子。”

为了搞清楚这种现象产生的原因,Seibel几人展开一番讨论,并给出了精彩见解,不过,或是由于过于聚焦“读”这个词,使得他们的思考局限于某一个框架,考虑的问题跟着带跑偏了。

实际上,我们都读过代码,但基本是需要编辑的时候才会选择读代码,

而只有当遇到复杂问题时,读代码这件事才变得异常重要。毕竟,有程序员就曾抱怨:“一坨几千行的代码,整个业务逻辑都放在里面,注释也不写全,谁能看懂?”

而为了养成这种读代码的好习惯,作者

Kartik Agaram

从另外一个角度给出了自己的见解——破解程序法读代码。

这种破解程序法比“被动地”、“线性”阅读能产生更好的理解,且基本满足以下三个特点:

  • 主动探索

    当你想要破解一款程序时,你最终希望要对代码库进行修改,恰恰是这个欲望引导着你一步一步读着代码;

  • 大幅修改

    同样,此时你会根据想要进行的修改对现有代码进行评估。决定用什么和删除什么迫使你

    对现有系统

    保持一副排斥的态度。而如果你以线性的思维读代码,你会发现:你基本无法批判性地检查代码;

  • 合:

    为了改变你想要的程序,你可以将新代码与现有代码进行组合。

  • 通过破解程序的方式学习代码,还可以调用某一个代码库的自然结构。一本好书就是通过一系列问题和答案来引导读者的,而代码库本质上是非线性的,像地图一样,你可以不停地向地图寻找答案,但你不能指望地图告诉你要问什么问题,因为从左到右、从上到下地线性读取地图是没有意义的。

    此外,过度沉迷于干净代码和整洁界面的讨论,使得我们忽略了一件事:对不熟悉的代码愈加避而远之。对于程序员而言,整洁,意味着有据可循,但如果我们想要另辟蹊径时,反倒是累赘。

    所以,或许只有当你再也听不到老大review代码的声声抱怨时,就说明已经你已经进步了~

    你们这些程序员,真得每天都在读代码吗?

    快来投票

    参考链接:http://akkartik.name/post/comprehension 

    招聘

    新的一年已经到来,「CSDN」公众号的目标更加明确,有更多的想法需要落地,不过目前对于小姐姐来说是“现实跟不上灵魂的脚步”,因为缺人~~



    所以,「CSDN」公众号要壮大队伍啦,

    现招聘业界与技术资深编辑记者、资深新媒体运营,有意者请将简历投至:

    tangxy@csdn.net

    ,期待你的加入!



    如果你暂时不能加入我们的队伍一起并肩战斗,也欢迎加入「CSDN」作者大家庭,与所有「CSDN」的朋友们分享你的精彩文章,投稿邮箱:

    yangli@csdn.net



    除了以上两项,如果你热爱技术分享,想要获得更广的视角和更前沿的技术探索,你还可以加入「CSDN」的译者群,利用业余时间,在尊重版权的前提下,翻译对中国开发者极有价值的文章,有意者请将简历投至:

    guorui@csdn.net

    ————— 推荐阅读 —————

    点击图片即可阅读

    你们这些程序员,真得每天都在读代码吗?

    你们这些程序员,真得每天都在读代码吗?

    你们这些程序员,真得每天都在读代码吗?

    你们这些程序员,真得每天都在读代码吗?


    你们这些程序员,真得每天都在读代码吗?