如何整理项目代码

我们总是必须碰触到其它人所写成的程序代码,甚至必须了解它、加以修改。

如果你不能熟悉这项工作,不仅在遇到你所不愿面对的局面时,无法解决眼前接手他人程序代码的难题,更重要的是,当你看着眼前现成的程序代码,却不知如何从中撷取自己所需,导致最后只能入宝山空手回,望之兴叹。

读代码的速度取决于你对整体代码的熟悉程度,刚上手肯定会慢一点。

  1. 从代码中梳理出业务逻辑。
    正向思维:从代码上看出,业务是什么样子的;
    逆向思维:从页面的结果来逆推代码的逻辑组织。
    无论是正向还是逆向,我们都要找到哪个是业务的终点,哪个是起点,这样中间的过程就是我们要梳理的。

  2. 首先试着运行,然后使用代码跟踪,摸清其运行轨迹,找到其核心部分。
    如果有分层概念,可以找出其各个层或模块的定位。

  3. 画流程图

  4. 看懂代码其实不难,大抵不过是选择,分支,循环。
    语法如果看不懂,那就得补补基础了。
    然后就是先弄清楚这段代码要做什么,有说明最好,可以帮你理解。没有说明就自己试着过一下代码流程。
    某些代码需要相关的知识,网上查查就知道了。

  5. 可以透过开放源代码学习到新的技术、学习到高手的架构设计,大幅提高学习的效率及效果。你甚至可以直接从开放源代码项目中抽取、提炼出自己所需的程序代码,站在巨人的肩膀上,直接由彼端获得所需的生产力。
    从这个观点来看,读懂别人所写的程序代码,就不再只是从负面观点的“被迫接收”,而是极具正面价值的“汲取养份”。

  6. 阅读程序代码的重点,不在于读完每一行程序代码,而是在于有效率地通过探索及阅读,从而了解系统的架构及行为模式。
    以便在你需要了解任何片段的细节实作时,能够很快在脑上对应到具体的程序代码位置,直到那一刻,才是细读的时机。

  7. 最好得先了解程序代码写成的程序语言。
    确认程序代码所用的命名惯例。

  8. 先花时间把每个文件夹和文件大致看一下。

  9. 以c代码为例,一般是先以文件为单位,看看每个文件大致是干嘛的,然后再以函数为单位,这时不关心函数的具体实现细节,而是将注意力放在函数接口上,大致理解下函数的意图,控制流的流动等,然后觉得哪个函数比较重要,在看看其实现。

  10. 读代码还是要层次化、带着问题去阅读:
    首先整体了解这个软件是干什么?解决什么问题?包含哪些大的模块,各个模块的作用是什么,各个模块的调用关系怎么样?
    然后对于每一个模块,这个模块是干什么的?为什么要有这个模块?这个模块怎么实现的?
    最后细化到每一个包,每一个类,每一个函数方法。从上到下,一一击破每一个问题,认真去思考他这样设计、写代码的好处,因为好的软件都会满足这种从抽象->具体的原则的。

  11. 想想如果是自己写,会怎么写?

  12. 把自己想象成计算机,按计算机的运行流程走。

  13. 精华:

(1)最好能了解业务功能
(2)从启动入口开始阅读
(3)先整体,宏观,粗线条的阅读,明白大体流程和作者的设计思想
(4)阅读第一遍后,进行思考,看看哪些地方自己还不清楚作者怎么做的,想不通的,矛盾的地方,这时候你是带着疑问去找答案,跳跃性大,但是会有深入和彻底的领悟,并能快速学到作者的技术
(5)如果要彻底的明白,就需要投入更多的时间去细读,细读就是读模块,读函数,了解具体实现。

此外,阅读的时候不要求快,快是你阅读多了,能力上去后自然的结果。

根据函数名,变量名猜测作者的大体意思,会意比什么都重要,会意了你就懂了作者,就顿悟了。

多想想换做我这个函数怎么写,一般可以猜测个七八,除非作者用了tricky,不过这些地方一般都有doc。

切记不要句读,要浏览式的意会,不要起初就纠结于细节,只要看懂”这段是干嘛,这段是做什么”之类的即可!

我觉得阅读能力和你的coding能力也相关,如果你coding水平高,好的代码自然有相通之处

作者:lambda喵
链接:https://www.zhihu.com/question/21186887/answer/18231631
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

你可能感兴趣的:(如何整理项目代码)