第八十一章 明日复明日(2 / 3)

投票推荐 加入书签 留言反馈

  天天:在的。
  天涯海角:大神,你终于上线了!我把悬赏私发给你了,你接一下。
  萧天果然是看到了有个悬赏在消息里面出现了,点击了一下,萧天眉头挑了挑,竟然是两万,还算不错,再一看有什么问题——怎么更简单的读代码。
  看到这里,萧天也是微微的一愣,这是什么鬼问题啊,不过想了想,萧天也是知道了,毕竟天涯海角之前的那个代码其实难度是不低的,原本他看那个代码都得要好几天,但是因为曹志文直接说出了他的问题所在,所以萧天也是凭借着牛人程序员的经验知识直接的免去了那要看几天代码的时间,因为他的那个问题,自己脑海里面牛人程序员经验知识里面就曾经出现过,所以解决很轻松。
  虽然是有牛人程序员的经验知识,但是读代码也还是有技巧的。
  可能一些人认为写代码要比读代码难,因为写代码无从下手,但是实际上是读代码可比写代码难多了。
  因为很多程序员都会出现一种自己写完成的代码,让他几天后去看,他都无法看懂!
  很多人有时候也会刷到抖音上面的程序员的动画,比如说,一个程序员写代码写了几天,突然有一天他也不知道自己写了什么,但是代码开始动了起来,这说明代码成功了,但是他却不知道代码为什么会成功,你让他去看这个代码他就看不懂了。
  所以说,读代码比写代码要难。
  而曹志文的朋友也应该是有一定水平的,所以萧天觉得他想要的读代码的技术应该不是top-down 和 bottom-up的这两种模式了,因为这两种大部分人可以用,也会用,算是很高效的了,所以如果他朋友计算机水平有的话,那么有掌握这两种读代码的模式。
  所以,他想要的应该是更加简单的,但是更加简单的叶新晨也没有,但是,根据专门的代码,他的确是有技巧的。
  天天:关于更简单的阅读代码的方法我是没有的,不过如果只是单单为了特殊情况的去读代码,那我还是有一定的技巧的。
  曹志文看着大神发来的消息,也是赶紧再一次的回复。
  天涯海角:天天大神,你说,不论有用没有用,这悬赏都会给你,毕竟我朋友问这个问题也的确是有些强人所难了。
  萧天看着曹志文发来的消息,下意识的还是松了口气,毕竟如果这个悬赏完成不了的话,那他的接悬赏任务的胜率也就是只有百分之五十了,这是萧天也不能够忍受的,毕竟他现在可是牛人级别啊!
  而且……
  他应该先问是什么问题,而不是先接这个问题,差点就让他没有一个完美的解决办法。
  毕竟曹志文的朋友问的问题的确是有些别出心裁。
  天天:行,那我先跟你说一下简单的东西,读代码,肯定是读写的好的代码,而这些代码一般是遵循一些原则。而这些原则,很难从最后的代码中反推出来。这些原则一般都是 declarative knowledge。而我们看到的代码大多是 imperative code,即使是 functional program 或者 declarative language 的 code,一般也是用低级的抽象来描述高级的原则。
  天天:举一个类比。目前体育比赛中很多规则的修改,都是借鉴以往比赛中一些旧规则导致比赛比较沉闷,或者被运动员钻空子的经验教训,但是单单去看这些规则,你无法反推出来它们是为了避免什么情况。
  天天:所以所谓的读懂写的比较好的代码,一般是从代码以外的途径了解作者的意图,然后再掌握作者贯彻这些意图的一些基本习惯。
  天天:就像你之前的悬赏一样,如果没有你的意图和主观的对我说问题的所在,你让我去看去读你的代码也起码得消耗很长时间。所以我的额外技巧也就是最好能够掌握作者的意图。
  曹志文看到这里,也是有些茅塞顿开的感觉,这个技巧绝对非常实用的,因为他们也不是经常看代码的人,阅读代码也只是有时候检查,或者是和朋友几个看看写的代码,又或者是也接点悬赏练习一下。
  他们真的不会去问写出代码的这个人是基于什么意图去写的,如果问一下,那他们去阅读这个代码再加上阅读代码的模式,绝对可以起到事半功倍的效果。
  而且曹志文也觉得自己写的时候也发现很多情况下逻辑被隐含了,特别是if-else这样的,为什么有些情况可以合并,有些可以忽略,如果不注释,光从代码本身是难以看出的,所以如果能够从自己的意图去看,那么还是能够发现缺陷的。
  天涯海角:天天大神不愧是天天大神,这种技巧很实用。
  的确很实用,因为这种极少如果没有大量的经验是不可能想出来这种技巧的。
  天天:另外有一种很出名的debug技术,就是用静态分析的方法找到代码中的implied invariant,然后搜索有什么地方违反了这些原则。这个技术和我的技巧也是有一定的相似处,如果你还要研究怎么阅读代码,多去看看debug技术。
  曹志文只觉得受益匪浅,大神不愧是大神。
  天涯海角:好的,那我把悬赏结了。 ↑返回顶部↑

章节目录