一看别人的代码就头疼!

提到阅读别人的代码,这是程序员心中永远的痛。虽然头疼不已,但我们依然要坚持下去,毕竟,我们还要继续把改变世界的代码续写下去!

现实中,改变世界的代码我不知道有没有,但实实在在的需求却是每天都出现。我们就来聊一聊怎么治这个“头疼”。

(图片来源于网络)

进了新公司

接了新项目

同事离职了

突然换项目组了

做了好久的项目突然被砍换项目了(扎心)

......

    这都是工作中常见的情况。小白们也许不知所措,但“老油条”们早已处变不惊。可是当到达阅读其他程序员代码这一步时,大部分人都表现出发自内心的不愿意。一个项目无数的文件,有多少坑、多少潜规则、多少不规范......鬼都不知道

还没看光想想都觉得得头发晕~

    时间紧、任务重,躲是躲不掉了,如何在短时间内掌握整个项目代码逻辑,从而继续进行开发工作,是我们面临的最大问题。幸运的是,经过多年的积累,我们的互联网上有很多优秀的方法可以借鉴,从而帮助我们科学的阅读代码,总结来看有这么几类:

  1. 从头挨个文件看

    优点:代码总是有限的,早晚挨个啃完,不会遗漏细节,简单、粗暴、有效。非常适合完全没经历过需要快速熟悉项目所有代码的小伙伴。

    缺点:消耗时间与文件数量成正比。很容易疲劳,可能看半天就开始不耐烦了(曾见过一位程序员因太难熬而叹气连连、坐立不)。用来锻炼或测试下意志力还是很好的呦。

  2. 从main函数或入口函数/文件入手

    优点:程序或业务运行总有个开始的地方,从这里入手更容易。简单方便,能明显提升阅读效率。

    缺点:容易漏掉一些内容,毕竟有些项目的框架很分散,可能有N个入口。

  3. 从项目整体结构出发

    优点:先看框架再看业务,配合笔记能更快的熟悉项目。既科学又效率,还没有那么枯燥。

    缺点:需要有一定的项目经验,新人一开始很难做到这种程度。

    这些优秀的方法曾经帮助过无数人以及我自己走出过困境,但为啥我发现在身边仍然还有很多人因为阅读别人的代码此而感到“头疼”呢?

    入行不久的新人小伙儿一边看代码一边破口大骂“#……%&……*”。平时温和的一个人突然变得脾气暴躁,硬生生把旁边想和你搭讪的姑娘的勇气压了回去!

    深耕多年的大佬表面上平静如水,可手却不停的搓脸抓头发,难不成这就是大龄程序员秃顶的原因?

    年轻人初生牛犊不怕虎,却被阅读代码绊住了向前的步伐!技术大佬久经沙场,无数艰难险阻都没把他们打败,为何看个代码就让他头疼不已?大家都被它折磨的痛苦不堪。如果想不通,那么我们不妨坐下来喝杯咖啡,先从代码的角度分析下把!

    由图可见,只要我们能顺利的读懂代码,那么阅读其他程序员的代码似乎并没有太大的问题。问题主要出现在那些既不规范,也没详细注释,时间还特别紧的情况下。这种代码也有一个非常形象的称呼——“屎山”!以下我们简称SS,大家可以脑补一下画面感。

    不要怕,我们继续分析。至少在人工智能可以自己写代码普及之前,我们所遇到的代码基本都是人写的。那么作者无非分为老手、新手,有经验、没经验,知道自己写的啥、不知道自己写的啥,这么些个区别。但无论情况有多糟有一点人类的思维方式大体类似,我们先本着这一点,一切都可以用大部分人的思维方式来解释,代码解读便会顺利一些。

    前面提到了,我们已经拥有了许多优秀的代码阅读技巧,在这些技巧的加持之下,仍然有一部分情况让我们发愁,那么我们是否要考虑换个方向来思考问题到底出在哪了呢!既然方法没有问题,排除了外在因素,那么我们就来继续分析下内在因素。当不能直接得到什么题什么答案的情况下,先把出现的所有可能列举出来是个通用的套路。(考试所有题型都会,还会在乎老师划重点么!)

  1. 懒......(啥也不说了,面壁思过去吧)

  2. 感觉代码垃圾,净坑自己。郁闷+生气+难受+想哭

  3. 觉得自己比“他”写得强多了。优越感+鄙视+生气

  4. 感觉看这些基础业务代码,浪费我的时间和生命,明明都该交给小弟们干,我应该只来统筹大局。没面子+烦躁+生气

  5. 这么多的代码,以前没做过,我要看到什么时候去~心里好没底。慌张+担心+恐惧

  6. 我只看优秀代码,SS会污了我的眼睛。优越感+傲娇+鄙视

    ......

    猜来猜去,我们可以把情况分为以下几类:

  • 很大的抵触心里。从心底不愿意接受眼前的代码,更别说能够很快理解代码。

  • 傲娇的心态。不屑于再去看具体的业务和具体的逻辑,以及水平差的代码。认为自己此时应该做更重要的事。

    如果我们把这两种心里状况拿来放在生活中其他事情上,大家都不会觉得这是一个积极向上的态度。然而现实中,因为阅读代码经常被认为是个低技术“体力活”而被轻视。同时书写的不规范、不严谨又加重了“这是作者水平差”的公认因素。最终导致大家并不会认为自己在面对SS时的状态有任何的不合适。说了这些,我们也就能了解到,治疗“头疼”,不仅需要外在的方法来调理,更重要的是需要我们发自内心的理解与配合,也就是药引子。

(图片来源于网络)

    假如我们能够充分理解原始作者的境况,从作者的角度设身处地的思考,那么我们将会减少很多抱怨与无奈,还有痛苦。大家回忆一下,自己年轻时候写过的代码,如今是否也已经成为了别人的SS了呢?当然,想要做到设身处地并不是一件容易的事情,思维转换,角色转换,平心静气......我们都懂,可真正做起来,很多时候都需要下很大力气、拼上许多耐心。

   


    既然正向突破比较困难,我们就来想想旁敲侧击的方式。我们之间又不认识,更不可能做到面对面的交流,唯一能够沟通的媒介便是眼前的代码。从此入手,我们很快便能通过代码风格、编写水平,为原始作者描绘出一幅画像。有这么句话,“想要成为名人,要先从模仿名人开始!”。想要了解一个人,自然是把自己“变”成他最直接。

(图片来源于网络)

    不知大家有没有过和小朋友交流的经历。举个典型的例子,父母和年龄很小的孩子之间的交流,已经有孩子的人们可能体会更深一些,我们会发现孩子总喜欢用短句和叠词(狗狗、肉肉、抱抱......)来和大人沟通,语速也很慢,这是因为孩子的语言系统还不完善,暂时只能使用这些简单的语句配合慢语速来交流。与此同时,孩子的父母也会用类似的短句、叠词来回应孩子,这便是父母抓住了与孩子的沟通方式,这样能更方便孩子理解自己的意图,也利于拉近自己与孩子的距离。

    再举个例子。我们身边总会有那么个成年人,一把年纪了,但每当遇到一群小朋友的时候,他/她总能成为孩子王,和孩子们打成一片,一起玩一起疯,仿佛他/她便是孩子中的一员。同样是成年人的我们,为啥不行嘞?因为我们一直认定自己已经是个成年人了。一个大老爷们很不好意思在那么多人面前表现得像个快乐了“小二X”,一位举止优雅的女士,不好意思将自己“哈哈”大笑的模样展示给外人看,形象很重要。孩子王做到了,他/她把自己当成了孩子,此时此刻考虑问题的方法和内容都从一个孩子的角度出发,从而在外人看起来那么自然,他/她就是一个岁数大一点的小孩儿。

    我曾经经历过一件小事。当时我在地铁站口等朋友,旁边墙上有一个量身高的标尺。有一位小学生,正在那个标尺边上玩耍,蹦蹦跳跳的在看自己的身高。由于我们离得很近,一开始我只是觉得有意思就在旁边观察了他一会儿,之后他注意到了我,用一个我们N年前已经玩烂的套路和我比身高:从我的头顶,用手斜向下比划一条线到他的腰部,“看!我比你高!......哈哈......哈!”。不知大家遇到这种情况会怎样,可能哈哈一笑的比较多吧,也是我当时起了玩心,回忆起小时候的场景,竟然用和他一样的方式反过来和他比身高,短短几分钟我们玩得都很开心,直至他被家人叫走。回过神来我发现,刚才的情景下,我居然没有感到任何的别扭,没有考虑周围人的眼光,也没觉得这个游戏幼稚,小朋友全程也没有嫌弃我

。刚才是真的将自己拉回了几十年前,和他一样大的年纪,感受着他这个年纪所拥有的快乐。

    前面提到过,如果我们能够设身处地,那么阅读SS将会大大减轻我们的痛苦。我想,将自己的状态调整到与原作者当时一样的状态便也是一种设身处地了。

    结尾,SS毕竟不是什么好东西,只是我们工作中一种无奈的选择,阅读优秀的代码犹如吃精美的实物,没必要总沉浸在恶心的SS中让我们总头疼脑热。努力提升自己依然是最重要的,你会发现当你站在顶端的时候,将真的很少有机会再接触到SS了,你会有更重要的使命来改变世界!

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值