为什么说读代码比写代码难?

作为一个需要参与codereview的测试工程师,看代码已经麻木了。


不光是代码,所有逆向工程一般都比原创要难,因为被别人的思维方式牵着鼻子走比自己思考问题要麻烦的多


每个人写法不同,你要去理会作者的意图和思路。就好比说。你一个普通话说惯了的人,你听听方言,是不是挺费劲的。但是说方言的人,觉得稀松平常,张口就来呀。

毕竟每个程序猿攻城狮都有自己的一些小思路在里面。

或者说遇到我这种大撒把的,估计你看到我的代码你都想砍死我。。各种i.j.k各种aa.bb.cc.ddddd


知人之难,不亚于登天。


如果把写代码比作杀手做局杀人,那写代码的程序员就是杀手。他会精心安排一切细节,最终天衣无缝地把目标杀死,不留任何痕迹。

这样的话,读代码就好比去破获这起杀人案。你只知道人死了,但死者姓甚名谁,什么身份家住何处,他为什么会死,是自杀还是他杀,自杀又是怎么死的,他杀又是谁杀的。一切都是谜团,什么都不知道,但是需要你限期破案,并且防止同类案件再发。

一个是顺思路,有想法自然而然得到结果,而另一个是逆思路,要从唯一的结果要去追踪万千可能的起源中的一个,你说哪个容易?


想想写文章和语文阅读理解就明白了。写文章的时候还不是想咋写咋写“我家门前有两棵树,一颗是枣树,另一颗也是枣树”,但要让你去分析这句话,你能吐血。


写代码是先有思路才写的,读代表是去读懂代码思路,如果代码不是自己写的可以会比较难读


因为你读的是个复杂的系统,写的是个helloworld


这个和弹钢琴曲一样。能读懂谱子的,已经很高水平了。


的确如此,很多人写代码没有规范,没有原则,跟发散思维一样,想到哪写到哪写缺乏严格的逻辑严密性!!!


很多人不理解为什么这么写,是不是有病,其实到后面你才会发自内心的说啊,真香。还有的人,看不懂别人代码留觉得写的烂,然后自己重新写,把踩过的坑在踩一遍,真的是瞎搞,还不如好好看懂代码,明白意思之后自己在整理一下功能,或者更好的实现功能。这才是真正的开发。动不动就重构有意思么?浪费时间。


打个比方,你家里人把东西收起来,过些天你要找出。哪个容易?

写代码,就等于收藏东西,放在哪,怎么放,都基本有数。

当然思路清晰的编程者还好些,如果碰到糊涂的,那你就幸运了。

而要读代码,首先你要基本了解作者的思路,如果没有注释习惯的,就跟盲人摸象,需要自己找思路。

而且,编程中,会调用一些第三方库,而库经常封装,是不提供代码的,等于一个黑盒,你需要自己再找资料,或者尝试理解。

现在的程序,经常有很多文件,或套用某某架构,你需要了解架构才能读懂文件。而大量文件中,互相嵌套,调用,如果没有设计文档的话,很容易迷路。因为人的注意力,一般只能同时关注不超过5-7个目标(文件、函数),超出了,就要实时有一个提示板作为参考。

所以说,要读别人代码,如果没有充分的设计资料的话,就是在大海捞针,特别对稍大的项目。


如果写的代码质量高,是很容易阅读的。


我自己写的要是没注释我都不想读


读代码是别人的思维,写代码是自己的


我觉得这个也要看是什么样的代码吧,不过大多数情况下读代码是比写代码难一些。

我认为主要原因是写代码的时候,我们知道整个流程,所以好写,比如我,动手写代码之前,首先坐设计,复杂的要画流程图,当前模块要做哪些功能都是一条一条的列出来,然后再去写代码,我感觉很多时候我都是做填空题一样,所以比较好写。

而读代码,就要去猜别人的流程,别人的思想,所谓的XXX源码剖析,就跟我们上小学初中时候,老师给我们讲某篇古文或者唐诗一样,要各种猜测当时作者的心境、所处的环境,这些都是相通的,当我们读代码get到了思想以后,再去读,其实就不难了。

另外一点是,我刚开始接触代码的时候,读代码确实吃力,但随着代码经验的增长,到了一定程度以后,基本上读代码也没有那么难了。我一直给自己一个信念,任何代码,只要给我时间,我都能把它读懂,我觉得这一点是很重要的,我们不能觉得自己读不懂,就不去读它。


即使是完全重新写,程序员也不愿意读别人的代码。读代码要比写代码难10倍。

一千个人就有一千个哈姆雷特,作者只有一个,读者千千万,每个人看到的都一样。这一条同样适用于代码。看代码时,你就得尽力去猜测原作者的意图,很多时候都不明白为什么要这样做,也许作者笨,也许他有不得已的苦衷,也许sb产品非得搞个奇怪的功能,所以代码就变成了怪物。


辩证思维,关键是看你站在哪个角度,个人认为读代码并不难,但如果真的是遇上一个已离职的同事甩给你一堆无任何注释、变量定义都吝啬到只用一个字母代替的话,并且逻辑性又非常强的代码,那估计要靠自己全部破解了,相反还不如按照自己的思维方式去写代码了

l


时间长了,自己写的都读着费劲[捂脸]


可视化


原始地址:/shenghuo/7463.html