你这个有问题,你那个...…
无限重复bug,无限改。
好烦,或许,可能,大概,我想不出来。
你有什么好建议?加个东西很简单的!结果搞了一天。
所以程序员,那些码农每天说来说去都是以上这些话,基本上都能把人给逼疯了。
接过这个悬赏之后,叶新晨就是认真的看了起来,这个文件包还是挺不小的,而且这些代码看的令人非常的头疼。
阅读代码有两种模式:top-down 和 bottom-up。
Top-down 模式,就是先设定一个 use case,比如说打开一个文件,然后静态跟着代码看,或者用 debugger 跟着看。
这样子每次出现函数调用的时候,把函数的执行层次纪录下来。
大致如下:
func1()
func2()
func()
func3()
这种图表很随意,是可以根据自己的需要增加信息。
比如有的人有时会把重要的实际参数一直标下来,这样阅读深层次代码不用再回头查形式参数到底指什么。
这个基本作用是防止在阅读深层次代码时忘记总体执行层次。
而Top-down 模式进行到一定层次,往往会发现虽然图画了出来,但还是无法了解程序再干什么。这时需要转入 bottom-up 模式,一直深入到最底层,给能了解作用的底层函数一个一个的写文档。
当然这时的文档是完全底层的观点。
然后就是不断在两个模式之间转换,不断的细化两种模式的理解。
虽然看这样子看代码会简单很多,但是还是也会一直看的人眼睛眼花缭乱。
而另一方面,在叶新晨接了这个悬赏不久,发布这个悬赏的人就给他发了一些消息。
天涯海角:你好,有些地方我要跟你说一下,因为我怕你看代码看的时间会很久。主要的问题就是我改了一个功能,结果总是跟预期对不上,查了代码C++的,没发现逻辑问题,然后花了几天,终于发现了关键点:有一个变量,莫名其妙在不经意间值就会变了。
天涯海角:然后我自然就开始怀疑是多线程没有保护的问题,但研究后不像,发现这个变量值跳变也不是随鸡的,总在一行特定的位置后,值就会变了,这一行特别简单,就是个简单的加法,然后跟这个加法不直接相干的另一个变量的的值就会发生变化。
天涯海角:所以就这个给我直接卡住了,我问了不少的程序员大咖都没有给我整明白,所以希望叶子兄能够帮我找出来哪个环节出现问题了。
叶子兄自然就是叶新晨的黑土平台的网名,毕竟黑土平台也不会让你用真名,身份证信息平台可以知道,但是没有必要让平台的用户知道,毕竟万一有人有仇,将身份信息泄露出去,那也不是一件美好的事情。
叶新晨看着这个天涯海角发来的消息,脑海里也是自动浮现出了一个经验知识。
PS:这些都是简单的程序问题,不是复杂的程序问题,所以以后我要是写到有夸张的地步的问题,实际上也都是简单的程序问题,所以如果有程序员大佬看到莫怪。因为我不会写那些复杂的……
https://zerifeisheng.com/book/30881/7012008_2.html