为什么写这一篇?因为上班了以后写代码是一个技能,不过大多数时候也时常是现用现差,这个说出来也是丢人。不过生活就是这样吧,不过积累的很重要的一个东西是什么呢,就是运行,调试,搜索相关历史。我们入职一家公司或者接手一个新的项目面临很重要的一个问题就是看懂代码。
找人教,找资料
新接手一个代码,怎么看最快?看书?自己调试?都不是,是找之前写这个代码的人耐心讲给你,不过工作了就发现大家不一定都这么好心。不过万一呢,万一你遇到好人了呢,先找人,再找文档。怎么找人?查看git历史,查看代码中的注释。看开源代码怎么办呢?这个是另一个神奇技能---社会工程学,想办法通过注释和社工找到开发者的邮箱和联系方式。找到人找人教你如何运行或者发给你文档什么的。找uml设计图。
跑起来
想办法先把代码跑起来。为什么跑起来这么重要。跑不起来的代码没办法调试和打log。
断点调试,单步调试
上学的时候写hello world,当时实在没懂得gdb什么的是干什么用的,但是上了班发现模块很多会遇到一些理解不了的bug,不过断点调试然后单步调试查看当时的变量就清楚了。断点调试就是设置一个断点让代码运行到指定的地方,单步调试就是运行到你想要的地方的大概位置开始让程序一步一步跑。
打印各种日志
看控制台log
写文件log
自己做一个控制台
安利应该看看Effective Debugging这本书。
历史
大树不是一天长成的,罗马不是一天建成的。
拖进source tree,查看提交代码的历史更改。
git log会告诉你为什么这行代码这么写。
git blame for line会告诉你这个代码是谁写的。
当项目非常大的时候出于学习目的可以找最早的tag来进行理解。100.0的tag看不懂就先把tag切换到0.0.1的代码来读。
画uml图
这里可以看我另一篇文章,为什么要画uml之类的。
唯物主义辩证法
最后的也是最重要的,在遇到很难解决的问题的时候,请用唯物主义辩证法来解决问题。唯物主义辩证法分析法。联系的观点看代码,发展的观点看代码,矛盾的主要方面的看代码。详细见唯物主义辩证法。
花钱
能花钱买的服务不行就花钱买,不限于代码