阅读程序的方法

引     

     程序是设计思想的体现。程序在设计之初,设计者会有一些列的目的(设计目标),接下来才是实现这些目的的思路(设计流程),最后才是具体地实现。

    阅读程序是程序员必备的技能,通过阅读高手的程序,了解程序的功能,学习程序设计的技巧。比较短的程序段,比如说一千行一下的程序,通常都不复杂,很容易读懂。但是,碰上上万行的程序,比如说ucos-ii内核,linux 0.11内核,uboot启动代码,没有一定的阅读技巧,像无头苍蝇一样的读,显然会四处碰壁。有些程序阅读者,心情浮躁,这本身就是程序员的大忌。在读海洋般的代码时,不肯钻进去,找很多的相关资料,大概了解了程序的结构和工作原理,就草草了事。似乎他们也懂了一些,但是又似乎完全不懂。调整心态是关键。有些程序阅读者会犯这样的错误,从程序的第一句开始读,一脚跳入程序的太多细节中,往往发现似乎进入迷宫,出也出不来。但是,好像不去读这些细节又不能窥见高手的程序技巧,这似乎陷入了绝境。

    我认为阅读大型程序必须有一定的规划和方法,也就是说有清醒的思路,然后才去阅读。这就像做一道很那的数学题一样,一开始就晕着头去做,往往半途而废;做这样的题通常先要尝试着整体分析,找到解决问题合适的途径,最后才是具体的细节演算。依据这种思路,我谈谈对阅读复杂程序的看法。

一、阅读程序的目的

    并不是每一个人阅读同一个代码的目的都是相同的,首先你要找到你阅读这段代码的初衷--为什么要阅读这个代码,是为了了解某个功能是怎样实现的,是为了学习一些编程技巧,还是为了深入理解代码的完整运作流程,还是其他的原因。

    只有知道阅读代码的原因,才能进一步确定想从所读代码中获得什么,接下来才是怎样获得的问题。

二、阅读程序的顺序

    通常情况下,我是认为阅读程序需要两步来读,也许根据你的需要,没必要这么麻烦。第一次读,不要注意细节,而去全面把握程序要实现的目的;第二次读,认真研究细节,去看实现这些目的的方法和技巧。只在意细节往往陷入第二段所描述的困境,最后阅读程序将被困难中断,而无法自拔;而只在乎目的,虽然可以把握程序的全局,但是不注意细节又很难获得高手们的技术技巧。两步阅读,一步也不能少,也不能颠倒顺序。

三、阅读程序需要注意的其他方面

1、程序阅读要加实验环节

    在读的过程中,有时没有做实验,很难知道程序的运行情况,所以必须配合实验来研究程序的代码,通常可以对感兴趣的程序做测试,通过程序运行的现象来理解程序的奥妙(这应该算作程序的调试)。

2、注意力合理分配

    大型的程序,对于程序员有限的生命是很难读完的,如果真这样做了,很有可能浪费了没必要的时间。根据阅读的目的,把注意力集中到想获得的内容上,而不要把注意力分散到所有程序的每一句代码,这样的时间和精力消耗是耗不起的。

3、有些问题放一放

    优秀的程序通常融合了高超的技术和算法,而对于读者来说水平有限,势必有一些代码目前无法破解,可以放一放。有可能这一放就永远不会再来破解,但也有可能将来的某一时刻,水平上了新的层次就可以看懂了。

强力推荐

    如果有时间最好将从高手中程序中获得的技巧可以自己编程实现一下,可以不要求很复杂,但是要能体现所应用的技巧。不过,你实现的功能越复杂,要求越高,你的投入也会越大,收获也是成正比的。做到“知行合一”,才会有大的进步,实践是认识的最终目的。

 

原文地址:https://www.cnblogs.com/amanlikethis/p/3427110.html