代码改变世界

如何读代码?读代码的利器---FreeMind

2011-12-07 13:51  D.Dark  阅读(1527)  评论(2编辑  收藏  举报

无论作为编程新人,还是职场老手,对于程序员,读别人的代码几乎是不可能跳过的环节,开始我读代码的方式很简单页很老土,几乎就是先挑能看懂的代码开始看,而能看懂的代码几乎都是实现具体功能的函数代码,然后一点一点向上层调用的地方读,这样做的结果往往是细节有余,整体观念不清楚。一般的解决措施是找具体架构的文档来读,先明白具体需求,输入输出接口再一点一点往下看。对于老代码或者缺乏维护但包含有效信息的代码则没有什么办法。

之后过了很久在一位学长的日志里学到如何有效读代码的,原文如下:

http://blog.renren.com/blog/54704738/762827592#nogo

下面是盗用的日志内容:

==================================================

刚到一个新的地方,必然会要看以前别人写的代码,只有你看懂了别人写的代码,你才能去修改它们,否则在一知半解的情况下去修改代码,很可能因为理解问题而引入bug,对于线上服务,将带来不可估量的问题。一般你到一个新的地方,别人也一定会给你一段时间叫你去看代码,有的地方可能还会有对你对代码的理解的考核。

记得当前在径点(AvePoint)实习的时候,当时是C#代码,我在很短的时间里就把代码理清了,而且还发现了一个小bug,这得益于什么呢?后来想想是得益于Visual Studio的强大功能,我在边看代码的时候,边调试,在调试的过程中看代码,调了几遍之后就了解了代码的逻辑。

今年在百度实习的时候,做完新人题之后就是看代码,由于是linux下的代码,没有好的ide,看起代码来比较费劲,还不能调试,加上代码逻辑性不是很强,串讲了两次都没有通过。我开始急了,我想到的办法就是做笔记,看到哪里就用文字来描述代码的过程。如果不理解代码的逻辑,就无法用文字描述代码的逻辑思路。读完整个代码,写了30多页的文档,最后才真正将代码看懂。

那其实写这么长的文档是没有必要的,很浪费时间,我发现我很长的一段时间,都浪费在写文档的过程中。但是如果你不写文档的话,你看完了后面的代码,有可能你就忘了后边的代码。

有没有其他的办法呢?

来到腾讯后,有幸参加一个以前在雅虎工作的同事分享他看到的某块代码逻辑。他是按照他的笔记来讲的。我看到他的笔记是一个从一个节点发散出去的图,点击某个节点的时候可以展开。后来得知,他用的那个软件是freemind,是一个思维导图软件,类似的还有xmind。

百度百科对思维导图的定义是:思维导图是有效的思维模式,应用于记忆、学习、思考等的思维“地图”,利于人脑的扩散思维的展开。思维导图已经在全球范围得到广泛应用,包括大量的500强企业。思维导图的创始人是东尼·巴赞。中国应用思维导图大约有20多年时间。具体可以参看百度百科关于思维导图的介绍。

尤其是对于比较复杂的代码,如果不借助有效的工具的话,很难在短时间内搞明白。俗话说得好,工欲善其事,必先利其器。如果你在为看代码而烦恼的话,不妨试试freemind或xmind等思维导图软件。

==================================================

 

具体的好处原文中已经讲的很清楚,不再多说。

下面是一些经常用到的快捷键和一些我觉得有用的一些规范:

insert:插入子节点

shift+insert:插入父节点

Enter:添加平行节点

shift+enter:在上方添加平行节点

ctrl+up/down/left/right:移动节点位置

F2:编辑节点

ctrl+滚轮:放大缩小

space:打开折叠(鼠标点击亦可)

ctrl+J:合并节点(要求节点没有子节点)

alt+shift+F:文本颜色

其他如新建复制黏贴查找等操作和win程序是一致的,没有差别,

我一般习惯的是:

根节点写模块名字

如果是过程式编程的就从调用点一路插入节点写下去

如果是面向对象编程在使用类的时候建立第一个子节点写“Private Member”,然后在该节点的子节点中列出相应的属性

类名用泡框(在“格式”下拉列表框中),其他用叉状