软件必备模块-如何看懂代码

为什么写这一篇?因为上班了以后写代码是一个技能,不过大多数时候也时常是现用现差,这个说出来也是丢人。不过生活就是这样吧,不过积累的很重要的一个东西是什么呢,就是运行,调试,搜索相关历史。我们入职一家公司或者接手一个新的项目面临很重要的一个问题就是看懂代码。

找人教,找资料

新接手一个代码,怎么看最快?看书?自己调试?都不是,是找之前写这个代码的人耐心讲给你,不过工作了就发现大家不一定都这么好心。不过万一呢,万一你遇到好人了呢,先找人,再找文档。怎么找人?查看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之类的。

唯物主义辩证法

最后的也是最重要的,在遇到很难解决的问题的时候,请用唯物主义辩证法来解决问题。唯物主义辩证法分析法。联系的观点看代码,发展的观点看代码,矛盾的主要方面的看代码。详细见唯物主义辩证法。

花钱

能花钱买的服务不行就花钱买,不限于代码

原文地址:https://www.cnblogs.com/franzlistan/p/10325783.html

时间: 2024-08-11 03:37:07

软件必备模块-如何看懂代码的相关文章

软件必备模块-基础设施

代码托管 作为一个项目一般都需要写代码,写代码就需要管理代码.作为个人项目可以直接选免费的第三方代码托管平台.如果机密性比较强,可以自己搭gogs或者gitlab,如果没有可靠的运维我建议直接用第三方代码托管平台. 以下是目前比较流行的代码托管平台: 国外 http://Github.com http://SourceForge.net http://Bitbucket.org http://gitlab.com 国内 http://git.oschina.net http://code.ali

为什么学习C语言这么久,看的懂代码,做不出题没项目

我看得懂别人的程序,可是我自己却写不出来,我应该怎么办啊?你了解这些嘛? 你只是能从别人书写的代码知道每一步都做些什么吧? 你明白别人的解题思路吗? 你知道别人为什么要用那样的算法吗? 如果你看着题目,你能写出实现同一功能的代码吗? 你能知道别人在写这个程序的过程中会遇到什么样的问题吗? 你能在看了别人的程序之后写出比他好的代码吗? 你能用另一种算法写出实现同一程序的代码吗? 你真的能看懂别人的程序吗?创一个小群,供大家学习交流聊天如果有对学C++方面有什么疑惑问题的,或者有什么想说的想聊的大家

迅速看懂模块

1.多看spec,理解该module在系统上的作用,理解系统. 2.搞清该module的Ports意义. 3.搞清楚该module的function. 4.搞清楚该module大概有哪几部分构成,尽可能量化该模块,逐一看懂内部细节. 5.最顶层的细节,借助仿真case,搞懂. 总体是:有顶层逐一看到底层,有抽象逐一理解到具体细节.而且要对照spec核实具体功能实现.

写在最前面 - 《看懂每一行代码 - kubernetes》

我要写什么 <看懂每一行代码 - kubernetes>会包含k8s整个项目的源码解析,考虑到门槛问题,在开始分析k8s之前我会通过一些更低难度的golang开源项目讲解来帮助大家提升golang编码技能:然后通过与k8s相关的一些项目的讲解,打通阻碍k8s学习的一些大障碍:最后集中火力,将kubernetes项目的整个源码吃透. 总体来说,本系列计划分三步走完成源码层面掌握k8s的目标: golang技能提升 k8s依赖技术 k8s核心组件 目前关于k8s应用的教程已经很多了,其中不乏相当优

hello world,初级水平抄抄代码先看懂

#include #include #include #define MaxSize 100 typedef char ElemType; typedef struct { ElemType data[MaxSize]; int top; }SqStack; void InitStack(SqStack *&s) { s=(SqStack *)malloc(sizeof(SqStack)); s->top=-1; } void DestroyStack(SqStack *s) { free(

资深程序员冒死揭开软件潜规则:无法维护的代码

原始博文发布于: Roedy Green's Mindproducts (http://mindprod.com/unmain.html ). 翻译链接: 点击打开链接 2014年11月25日 03:11 如何编写无法维护的代码 让自己稳拿铁饭碗 ;-) Roedy Green 简介 永远不要(把自己遇到的问题)归因于(他人的)恶意,这恰恰说明了(你自己的)无能. -- 拿破仑 为了造福大众,在Java编程领域创造就业机会,兄弟我在此传授大师们的秘籍.这些大师写的代码极其难以维护,后继者就是想对

资深程序猿冒死揭开软件潜规则:无法维护的代码

原始博文公布于: Roedy Green's Mindproducts (http://mindprod.com/unmain.html ). 翻译链接: 点击打开链接 2014年11月25日 03:11 怎样编写无法维护的代码 让自己稳拿铁饭碗 ;-) Roedy Green 简单介绍 永远不要(把自己遇到的问题)归因于(他人的)恶意,这恰恰说明了(你自己的)无能. -- 拿破仑 为了造福大众,在Java编程领域创造就业机会,兄弟我在此传授大师们的秘籍.这些大师写的代码极其难以维护.后继者就是

只有程序员可以看懂的笑话 大全集(1)

宪法顶个球!中国的法律都是.txt文件,不是.exe文件. 程序员:三年前,当我写下这个的时候,只有上帝和我能够看懂. 现在,只有 上帝能看懂了. 同事说,他在写i++的时候总觉的自己写的是 我艹.........有木有同感??? ? 程序员,年二十有二,始从文,连考而不中. 遂习武,练武场上发一矢,中鼓 吏,逐之出. 改学IT,自撰一函数,用之,堆栈溢出. <桃花庵--程序员版>写字楼里写字间,写字间中程序员: 程序人员写程序, 又将程序换酒钱: 酒醒只在屏前坐,酒醉还来屏下眠: 酒醉酒醒日

[智能硬件] 3、三分钟看懂智能硬件原理——简易智能手环制作教程(包括炫酷手机客户端开发)

首先恭喜大家挺过了测试二!为什么说“挺”呢?因为测试二的难度和测试一相比有一个比较大的跳跃:首先测试一仅仅利用现有硬件模块稍加改造而DIY一个蓝牙防丢器,而测试二则要求大家具有从脑袋里的一个想法到一个全新的小设备的实现的全部能力,显然该过程不是连几根线那么简单:其次测试一对蓝牙的使用仅限于信号搜索层面,而测试二一下子深入到可靠通信的层面了,其难度可想而知:最后在测试二中客户端的设计中复杂的状态转换过程,以及嵌入式编程时需要对所使用的硬件作细致的分析,都构成了对前期基础没打牢的同学一种挑战.不过好