zoukankan      html  css  js  c++  java
  • 如何读代码?读代码的利器---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。

  • 相关阅读:
    Educational Codeforces Round 10 C. Foe Pairs 水题
    Educational Codeforces Round 10 B. z-sort 构造
    CDOJ 1048 Bob's vector 三分
    Educational Codeforces Round 10 A. Gabriel and Caterpillar 模拟
    第14届电子科大初赛民间盗版部分题目题解
    HDU 5654 xiaoxin and his watermelon candy 离线树状数组 区间不同数的个数
    HDU 5653 Bomber Man wants to bomb an Array. dp
    HDU 5652 India and China Origins 二分+并查集
    HDU 5651 xiaoxin juju needs help 数学
    HDU 5650 so easy 数学
  • 原文地址:https://www.cnblogs.com/Spacecup/p/3891653.html
Copyright © 2011-2022 走看看