閱讀別人的代碼例获,是一種怎樣的體驗(yàn)

原創(chuàng):微信公眾號(hào) 【阿Q說(shuō)代碼】,歡迎分享曹仗,轉(zhuǎn)載請(qǐng)保留出處榨汤。

之前寫過(guò)一篇名為《看了同事寫的代碼,我竟然開(kāi)始默默的模仿了怎茫。收壕。」旄颍》的文章啼器,今天偶然間看了下后臺(tái)數(shù)據(jù),大吃一驚俱萍。該文章的閱讀量在微信公眾號(hào)內(nèi)竟然達(dá)到了驚人的5W+ 。對(duì)于沒(méi)見(jiàn)過(guò)市面的我來(lái)說(shuō)已經(jīng)相當(dāng)滿足了告丢。

當(dāng)然枪蘑,能達(dá)到這樣的數(shù)據(jù)離不開(kāi)各位大佬的垂青,在此再次感謝各位大佬岖免。

于是我又抱著好奇的態(tài)度去其他平臺(tái)看了下數(shù)據(jù)岳颇,感覺(jué)也不錯(cuò),大體算了一下全網(wǎng)竟然達(dá)到了10W+ ——此處應(yīng)有掌聲颅湘,為自己鼓個(gè)掌话侧。

后面如果還有大佬想轉(zhuǎn)載這篇文章,可以第一時(shí)間聯(lián)系我闯参,謝謝瞻鹏。

閱讀感受

有趣的是大家對(duì)“閱讀同事代碼”這件事展開(kāi)了熱烈討論,來(lái)兩張圖體會(huì)下鹿寨。


5評(píng)論.jpg
6評(píng)論.jpg

對(duì)于我來(lái)說(shuō)新博,也有些體會(huì)和感悟,分享給大家脚草。

初出茅廬

“在座的各位都是垃圾赫悄,小丑竟是我自己” ——這是我剛剛參加工作時(shí)閱讀同事代碼的感受。

作為初級(jí)程序員的我馏慨,剛參加工作不久埂淮,只會(huì)簡(jiǎn)單的編程知識(shí),對(duì)于設(shè)計(jì)原則写隶、設(shè)計(jì)模式倔撞、代碼規(guī)范等一竅不通,卻“盲目自信”樟澜,認(rèn)為編程也就那么回事误窖。

閱讀同事寫的代碼時(shí)叮盘,由于本身眼界有限,認(rèn)為過(guò)于繁瑣霹俺、晦澀難懂柔吼,有裝X的嫌疑,總想著能不能給他優(yōu)化一下子丙唧。你別說(shuō)還真有"膽大"的同事給老員工優(yōu)化代碼的案例愈魏,還好在測(cè)試階段把Bug測(cè)出來(lái)了,要不然上線之后追悔莫及想际。

在此建議別輕易修改別人的代碼培漏,代碼的“混亂”不是一蹴而就的,是經(jīng)過(guò)多個(gè)版本迭代或者需求的變更遺留下來(lái)的胡本,是經(jīng)得住推敲的牌柄。如果非得重構(gòu)代碼,建議讓編碼者親自操刀侧甫。

當(dāng)廢了九牛二虎之力把同事的代碼看懂之后珊佣,突然覺(jué)得同事真的太牛了。他當(dāng)時(shí)是怎么想到用這么巧妙地方法來(lái)實(shí)現(xiàn)該功能的披粟?崇拜之情溢于言表咒锻。要是跟他拜師學(xué)幾年,豈不是大業(yè)可成守屉。

從容不迫

“進(jìn)可攻退可守”——是我對(duì)閱讀同事代碼第二階段的感受惑艇。

工作幾年之后,對(duì)代碼的編寫和工作的流程有了進(jìn)一步的理解拇泛,對(duì)閱讀別人代碼這件事也就有了更多的感受滨巴。俗話說(shuō)“吃虧是福”碰镜,在工作中也一樣兢卵,不親自來(lái)踩一下項(xiàng)目中的坑,你永遠(yuǎn)也不知道“社會(huì)的險(xiǎn)惡”绪颖。

經(jīng)歷過(guò)閱讀別人的代碼甚至修改別人的代碼之后秽荤,年輕的沖動(dòng)和對(duì)垃圾代碼的憤怒也被緊急的項(xiàng)目以及莫名的Bug給磨平了,少了些青蔥的激昂柠横,多了些老練的從容窃款。

為什么總結(jié)為“進(jìn)可攻退可守”呢?是因?yàn)橛辛斯ぷ鞯某恋碇箅狗眨瑢?duì)之前的設(shè)計(jì)原則晨继、設(shè)計(jì)模式等有了基本的了解,再遇到垃圾代碼時(shí)總想大展身手搬俊,為項(xiàng)目做點(diǎn)“貢獻(xiàn)”紊扬,將垃圾代碼重構(gòu)一翻蜒茄,故而稱之為“進(jìn)”。

當(dāng)我們想大刀闊斧的為項(xiàng)目改進(jìn)時(shí)餐屎,卻發(fā)現(xiàn)項(xiàng)目的弊病根深蒂固檀葛,改造起來(lái)并不容易,然而隨著工期的逼近腹缩,我們不得不向時(shí)間妥協(xié)屿聋。利用版本控制工具默默的回滾代碼,繼續(xù)往垃圾代碼中添加“垃圾”藏鹊,我把它稱之為“退”润讥。

當(dāng)項(xiàng)目上線無(wú)Bug之后,意味深長(zhǎng)的來(lái)一句:垃圾代碼還是有垃圾代碼的好處呀盘寡。當(dāng)下次開(kāi)項(xiàng)目重構(gòu)需求討論會(huì)時(shí)楚殿,心里默默的來(lái)一句:要不你還是把我殺了吧!

久經(jīng)沙場(chǎng)

“寬猛并濟(jì)竿痰,不過(guò)度設(shè)計(jì)”——這是我現(xiàn)在閱讀同事代碼的感受勒魔。

并不是說(shuō)我的技術(shù)有多牛或者說(shuō)我的境界有多高菇曲,主要是我扎根于“搬磚”一線,工作時(shí)間長(zhǎng)了抚吠,看的代碼也比較多而已常潮。

從我身邊的同事或朋友來(lái)看,他們的個(gè)人技術(shù)能力都比較過(guò)硬楷力,對(duì)業(yè)務(wù)對(duì)架構(gòu)的熟練程度也比較到位喊式。他們對(duì)各種設(shè)計(jì)規(guī)則、代碼規(guī)范了然于胸萧朝,但卻不執(zhí)著于此岔留。能簡(jiǎn)單解決的問(wèn)題一筆帶過(guò),該注意的設(shè)計(jì)規(guī)范也能駕輕就熟检柬。

在與朋友的交談中提及到閱讀代碼的問(wèn)題献联,他們也是毫不避諱的說(shuō):每個(gè)項(xiàng)目中都會(huì)存在垃圾代碼,當(dāng)然也不缺乏好的設(shè)計(jì)何址。對(duì)于垃圾的代碼里逆,在不影響全局的情況下可以適度重構(gòu),當(dāng)然對(duì)于重要的環(huán)節(jié)完全重構(gòu)成本太高,試錯(cuò)成本有點(diǎn)大。而對(duì)于精致的代碼万细,平時(shí)遇到了也會(huì)研究一番尼酿,從設(shè)計(jì)思路到代碼編寫都會(huì)虛心學(xué)習(xí)蛔钙,畢竟人無(wú)完人笨农,代碼更是這樣就缆。

要做到寬猛并濟(jì)也就是要做到:對(duì)自己要嚴(yán)格要求,盡量減少垃圾代碼的輸出與添加磁餐,盡量做到設(shè)計(jì)的規(guī)范與合理;對(duì)別人要以寬容并包的心態(tài)來(lái)看待羞延,每個(gè)人的風(fēng)格不同,對(duì)同一業(yè)務(wù)的理解不同脾还,實(shí)現(xiàn)方式自然不同伴箩。

當(dāng)然如果想更上一層樓,那就需要把公司的成本與軟件的開(kāi)發(fā)結(jié)合起來(lái)鄙漏,適度設(shè)計(jì)、適度重構(gòu)怔蚌,畢竟盈利才是公司的終極目標(biāo)。

如何閱讀

至于該如何閱讀別人的代碼椅野,我也來(lái)談?wù)勎业南敕瑁诖藪佫D(zhuǎn)引玉竟闪,大家評(píng)論區(qū)見(jiàn)杖狼。

優(yōu)秀的評(píng)論可以獲取文末技術(shù)書籍一本炼蛤。

在閱讀代碼之前可以查看一下項(xiàng)目原型蝶涩、規(guī)劃流程、《設(shè)計(jì)文檔》等暗挑,如果公司開(kāi)發(fā)需求比較急或者沒(méi)有對(duì)文檔編寫的習(xí)慣斜友,找開(kāi)發(fā)同事了解下開(kāi)發(fā)邏輯流程或者找產(chǎn)品同事了解下項(xiàng)目的需求也是不錯(cuò)的選擇。

一定要先了解需求與項(xiàng)目流程鲜屏,這是代碼的靈魂国拇。

我們還可以跟同事“嘮嘮嗑”酱吝,了解下他的實(shí)現(xiàn)方案土思、實(shí)現(xiàn)方式、關(guān)鍵技術(shù)等己儒,待到看源碼時(shí)崎岂,便可以了然于胸闪湾,有的放矢。

如果一頭深深扎于代碼之中江醇,對(duì)于有經(jīng)驗(yàn)的“老者”能了解代碼的層次結(jié)構(gòu)何暇,但是對(duì)于經(jīng)驗(yàn)欠缺尤其是對(duì)框架或者結(jié)構(gòu)不明確的“年輕人”就會(huì)一頭霧水,哪怕最后將代碼搞懂了律适,可能也事倍功半遏插。

讀代碼時(shí)可以先根據(jù)流程圖捋順整體邏輯,然后再去深入研究每一個(gè)函數(shù)的功能及實(shí)現(xiàn)胳嘲。在研究的過(guò)程中扣草,可以像讀Spring或者Mybatis等編碼清晰的源碼那樣,養(yǎng)成隨手畫流程圖或者思維導(dǎo)圖的習(xí)慣鹰祸,下次再看時(shí)就一目了然了密浑,畢竟好記性不如爛筆頭嘛。

如果不善于畫圖尔破,當(dāng)然可以在本子上畫個(gè)草圖呀浇衬,不要拘泥于形式餐济。

如果還不擅長(zhǎng),那就將代碼檢出本地分支醉冤,在本地分支上做注解篙悯、打標(biāo)記、寫疑問(wèn)辕近,盡你所能“迫害”本地代碼移宅,為所欲為,直到便于自己理解漏峰,千萬(wàn)別客氣。

當(dāng)然代碼的理解也可以在Debug模式下進(jìn)行倔喂,實(shí)踐出真知靖苇。看十遍不如跑一邊贤壁,讓程序動(dòng)起來(lái),你的思緒也就飛起來(lái)了馒索,變得活絡(luò)了名船,也就便于理解了。

以上是我淺顯的觀點(diǎn)渠驼,評(píng)論區(qū)留下你的觀點(diǎn)吧!

小結(jié)

無(wú)論是從讀別人的代碼那種煎熬的程度疯趟,還是從如何閱讀才能提高效率,無(wú)一不體現(xiàn)出代碼的可讀性對(duì)開(kāi)發(fā)效率的影響倦青,因此我們?cè)谄綍r(shí)開(kāi)發(fā)過(guò)程中一定要寫注釋盹舞、寫注釋、寫注釋踢步!

好的注釋不光可以把流程顯示清楚,更可以將解決問(wèn)題時(shí)存在的“坑”寫出來(lái)述雾,讓后者少走彎路兼丰。畢竟前人挖坑,后人也不會(huì)管埋的黍翎!

阿Q將持續(xù)更新java實(shí)戰(zhàn)方面的文章艳丛,感興趣的可以關(guān)注下,也可以來(lái)技術(shù)群討論問(wèn)題呦氮双!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末戴差,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子造挽,更是在濱河造成了極大的恐慌弄痹,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谐丢,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡讥珍,警方通過(guò)查閱死者的電腦和手機(jī)窄瘟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)氏义,“玉大人图云,你說(shuō)我怎么就攤上這事】⒖觯” “怎么了丹泉?”我有些...
    開(kāi)封第一講書人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)紫岩。 經(jīng)常有香客問(wèn)我睬塌,道長(zhǎng),這世上最難降的妖魔是什么揩晴? 我笑而不...
    開(kāi)封第一講書人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任硫兰,我火速辦了婚禮,結(jié)果婚禮上劫映,老公的妹妹穿的比我還像新娘。我一直安慰自己雌桑,他們只是感情好祖今,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布拣技。 她就那樣靜靜地躺著耍目,像睡著了一般。 火紅的嫁衣襯著肌膚如雪莫辨。 梳的紋絲不亂的頭發(fā)上耕捞,一...
    開(kāi)封第一講書人閱讀 51,521評(píng)論 1 304
  • 那天,我揣著相機(jī)與錄音敞映,去河邊找鬼磷斧。 笑死,一個(gè)胖子當(dāng)著我的面吹牛弛饭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播档桃,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼憔晒,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了嘹屯?” 一聲冷哼從身側(cè)響起从撼,我...
    開(kāi)封第一講書人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎婆翔,沒(méi)想到半個(gè)月后掏婶,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡纺腊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年茎芭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片壹粟。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡宿百,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出雀费,到底是詐尸還是另有隱情痊焊,我是刑警寧澤,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布辕羽,位于F島的核電站垄惧,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏到逊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一枷踏、第九天 我趴在偏房一處隱蔽的房頂上張望掰曾。 院中可真熱鬧,春花似錦掏熬、人聲如沸秒梅。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)幔嫂。三九已至誊薄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間切心,已是汗流浹背片吊。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留全谤,地道東北人爷贫。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像沸久,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子子刮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容