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


    转自(http://www.cnblogs.com/DDark/archive/2011/12/07/2279199.html)

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

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

    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”,然后在该节点的子节点中列出相应的属性

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

    思维导图FreeMind

     

    什么是MindMap?

    • MindMap(被译成思维导图或心智图)是一种思维工具,由英国的记忆之父托尼-博赞发明。
    • MindMap是一种新的思维模式,它将左脑的逻辑、顺序、条例、文字、数字,以及右脑的图像、想像、颜色、空间、整体等各种因素全部调动起来,把一长串枯燥的信息变成彩色的、容易记忆的、有高度组织性的图,它绘制起来非常简单,而且十分有趣这样。利用MindMap不但可以增强思维能力,提升注意力与记忆力,更重要的是,能够启发我们的联想力与创造力。

      绘制MindMap的好处

    • 使用色彩、线条、关键词、图像等多种素材,可以大大提高回忆的效率。
    • 由主题展开的辐射状结构,可以掌握信息资讯的整体架构。
    • 分级的辐射状结构,使信息结构清晰,层次分明。
    • 可视化和可操作的思维过程,能激发更有创造力的思维。
    • 绘图过程中,同时使用了左右脑,可以不断提高思考的能力。
    • 通过记录思维过程,加强对个人知识管理。

    思维导图的软件有很多,比较有名的有freemind,blumind,mindmanager,xmind等,像我这样的跨平台用户当然更青睐简洁的freemind。Freemind来做分析有几个优势:

    1、比较简洁大方,快速稳定

    2、支持的导出格式比较多

    3、复制到TXT中,会有缩近的TAB

    4、云框,对于关键词来说是一个很好的分割

    安装也非常简单,进入Freemind软件的主页面(http://freemind.sourceforge.net/wiki/index.php/Download),选择Microsoft Windows 下的Windows Installer Max。

  • 相关阅读:
    Git官方推荐用书
    二叉树-补习
    POJ 2251 Dungeon Master(三维BFS)
    Codeforces 675C Money Transfers (思维题)
    HDU 1195 Open the Lock(BFS)
    HDU 1010 Tempter of the Bone(DFS+剪枝)
    POJ 1426 Find The Multiple(DFS,BFS)
    POJ 3216 Prime Path (BFS)
    POJ 3278 Catch that cow(BFS)
    UVa 572 Oil Deposits(简单DFS)
  • 原文地址:https://www.cnblogs.com/Spacecup/p/3891653.html
Copyright © 2020-2023  润新知