代码这种东西一碰你的人生就好像变了一个人似的。
基本上日常生活中都要用代码交流了。
经常会说…
打个比方?比如?如果?否则?死循环?炸了?死了?宕机了?崩了?傻了?重复bug为什么?不可能?不应该?
你觉得怎么样?我不知道,我不会,我也不清楚。
需求文档呢?没有。
你这个有问题,你那个...…
无限重复bug,无限改。
好烦,或许,可能,大概,我想不出来。
你有什么好建议?加个东西很简单的!结果搞了一天。
所以程序员,那些码农每天说来说去都是以上这些话,基本上都能把人给逼疯了。
接过这个悬赏之后,叶新晨就是认真的看了起来,这个文件包还是挺不小的,而且这些代码看的令人非常的头疼。
阅读代码有两种模式:top-down和bottom-up。
top-down模式,就是先设定一个usecase,比如说打开一个文件,然后静态跟着代码看,或者用debugger跟着看。
这样子每次出现函数调用的时候,把函数的执行层次纪录下来。
大致如下:
func1
func2
func
func3
这种图表很随意,是可以根据自己的需要增加信息。
比如有的人有时会把重要的实际参数一直标下来,这样阅读深层次代码不用再回头查形式参数到底指什么。
这个基本作用是防止在阅读深层次代码时忘记总体执行层次。
而top-down模式进行到一定层次,往往会发现虽然图画了出来,但还是无法了解程序再干什么。这时需要转入bottom-up模式,一直深入到最底层,给能了解作用的底层函数一个一个的写文档。
当然这时的文档是完全底层的观点。
然后就是不断在两个模式之间转换,不断的细化两种模式的理解。
虽然看这样子看代码会简单很多,但是还是也会一直看的人眼睛眼花缭乱。
而另一方面,在叶新晨接了这个悬赏不久,发布这个悬赏的人就给他发了一些消息。
天涯海角:你好,有些地方我要跟你说一下,因为我怕你看代码看的时间会很久。主要的问题就是我改了一个功能,结果总是跟预期对不上,查了代码c++的,没发现逻辑问题,然后花了几天,终于发现了关键点:有一个变量,莫名其妙在不经意间值就会变了。
天涯海角:然后我自然就开始怀疑是多线程没有保护的问题,但研究后不像,发现这