乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      十步教你如何接手別人的代碼

       timtxu 2019-08-21

      想必在很多程序員的職業(yè)生涯中,都有過(guò)一種難以避免的狀況,即接下別人的代碼。而這是種怎樣的體驗(yàn)?有人說(shuō),接手別人的代碼之后我也想辭職;有人說(shuō),一個(gè)連注釋都沒(méi)有的代碼有何靈魂可言;更有網(wǎng)友說(shuō),如果你恨一個(gè)人,就讓他接手別人的代碼吧......

      因此,在我們面對(duì)別人遺留下來(lái)的代碼時(shí),究竟該如何處理?

      十步教你如何接手別人的代碼

      作者 | Eric Stiens

      譯者 | 彎月,責(zé)編 | 屠敏

      出品 | CSDN(ID:CSDNnews)

      以下為譯文:

      最近,我找到了一份新工作,結(jié)果卻發(fā)現(xiàn)自己又一次身處相同的漩渦:接手一個(gè)陌生的大型代碼庫(kù),我不知道這些代碼建立的初衷,也不明白編寫代碼的背景。

      我不知道哪些代碼存在已知的問(wèn)題,團(tuán)隊(duì)中的其他開(kāi)發(fā)掌管哪些代碼,哪些代碼需要重構(gòu),而哪些代碼可能永遠(yuǎn)也不會(huì)被觸碰。這完全是一個(gè)未知的領(lǐng)域,而且四周危機(jī)四伏。

      在本文中,我將分享一些關(guān)于如何接手一個(gè)陌生代碼庫(kù),并為團(tuán)隊(duì)做出貢獻(xiàn)的經(jīng)驗(yàn)。

      十步教你如何接手別人的代碼

      搭建開(kāi)發(fā)環(huán)境

      首先搭建好應(yīng)用程序的開(kāi)發(fā)環(huán)境:安裝依賴項(xiàng),初始化數(shù)據(jù)庫(kù)、配置網(wǎng)絡(luò)連接等。一般來(lái)說(shuō),這些工作都不會(huì)一帆風(fēng)順。每個(gè)應(yīng)用的背后都有一群開(kāi)發(fā)人員,他們很難把每一個(gè)小竅門都爛熟于心。所以要注意做好筆記。你需要把一切不能按預(yù)期工作的問(wèn)題都記錄下來(lái)。無(wú)法正確地安裝代碼庫(kù)的依賴項(xiàng)?記錄下來(lái)。無(wú)法初始化數(shù)據(jù)庫(kù)?記錄下來(lái)。初始化的用戶都密碼跟README中的密碼不一致?記錄下來(lái)。這是你發(fā)揮作用的第一步!缺乏知識(shí)就是你的優(yōu)勢(shì),因?yàn)檫@些問(wèn)題都凸顯了文檔和構(gòu)建腳本的缺陷。所以抓住這次機(jī)會(huì)。對(duì)于開(kāi)發(fā)團(tuán)隊(duì)來(lái)說(shuō),能夠通過(guò)可靠的手段搭建應(yīng)用程序環(huán)境也是一項(xiàng)艱巨的任務(wù),雖然這項(xiàng)任務(wù)經(jīng)常被人忽略。你可以讓團(tuán)隊(duì)再次注意到這些問(wèn)題。

      十步教你如何接手別人的代碼

      保持謙虛

      毫無(wú)疑問(wèn),你會(huì)覺(jué)得有些代碼寫得很糟糕。有些代碼太過(guò)于取巧或太簡(jiǎn)單。有些代碼沒(méi)有經(jīng)過(guò)充分的測(cè)試。有些代碼過(guò)于冗長(zhǎng)。有些代碼有嚴(yán)重的耦合。你可能想立即重構(gòu)。

      幾個(gè)月后,你看自己的代碼時(shí)也會(huì)有同樣的感受。

      人們?cè)谥刂丶s束下,盡其所能編寫了這些代碼。想必這些代碼完成了一些功能,而且現(xiàn)在你接手了這些代碼。有一天,有人會(huì)在不了解上下文的情況下看到你寫的代碼,他們可能也會(huì)覺(jué)得你的代碼很糟。

      所以,你不應(yīng)該這樣想。你應(yīng)該用初學(xué)者的心態(tài),想法改進(jìn)這些代碼,就像我們?cè)诘?條中提到的那樣,缺乏知識(shí)就是你的優(yōu)勢(shì)。你不像其他的團(tuán)隊(duì)成員,他們?cè)谶@個(gè)應(yīng)用程序上工作了數(shù)月或數(shù)年,所以你沒(méi)有他們那樣的偏見(jiàn),也沒(méi)有盲點(diǎn)。對(duì)你來(lái)說(shuō),一切都很新鮮。但是你也沒(méi)有足夠的背景知識(shí)下結(jié)論,所以不要總覺(jué)得自己能夠?qū)懗龈玫拇a!

      十步教你如何接手別人的代碼

      黃金通道

      找到應(yīng)用程序中關(guān)鍵的一個(gè)功能。只需一個(gè)。這可以是關(guān)鍵的索引視圖或API端點(diǎn)。也可以是一個(gè)能完成很多功能的函數(shù)。然后,你需要找到一個(gè)測(cè)試,測(cè)試通往端點(diǎn)的黃金通道(在這個(gè)過(guò)程中,請(qǐng)暫時(shí)忽略其他干擾因素,比如輔助函數(shù)、錯(cuò)誤處理、語(yǔ)法糖等)。如果沒(méi)有這樣的測(cè)試,你可以自己寫一個(gè)(請(qǐng)參照第4條)。

      接下來(lái),運(yùn)行這個(gè)測(cè)試,并反向追蹤。找到輸出,通過(guò)閱讀代碼和調(diào)試技術(shù)找到輸入。然后將這些輸入作為輸出,再找下一個(gè)輸入,以此類推。提醒自己這只是一道非常復(fù)雜的邏輯難題。這中間沒(méi)有任何神秘的事情發(fā)生。一切都按部就班。任何輸出都不會(huì)憑空產(chǎn)生(請(qǐng)忽略庫(kù)、元編程、以及大量的依賴關(guān)系……這些只會(huì)讓手頭的代碼更為復(fù)雜,但它們也只是更多的代碼而已……)

      十步教你如何接手別人的代碼

      寫測(cè)試

      在了解現(xiàn)有代碼庫(kù)時(shí),不引入任何錯(cuò)誤,同時(shí)還能幫助你學(xué)習(xí)的一個(gè)好辦法就是測(cè)試文檔記載的現(xiàn)有功能。測(cè)試覆蓋范圍因具體情況而異。對(duì)于大多數(shù)開(kāi)發(fā)團(tuán)隊(duì)來(lái)說(shuō),單元測(cè)試是理想的選擇,但隨著你深入了解更高層的抽象,覆蓋范圍會(huì)變得更加模糊。你可以通過(guò)編寫良好的集成規(guī)范來(lái)簡(jiǎn)單記錄已經(jīng)完成的工作。在搞清楚你測(cè)試的這些行為背后的驅(qū)動(dòng)因素后,就可以了解到大量的代碼。你可以幫助自己和其他人今后更容易地重構(gòu)代碼,而且你不會(huì)破壞任何代碼,除了可能會(huì)改動(dòng)部分測(cè)試代碼之外!

      十步教你如何接手別人的代碼

      大量閱讀

      大量閱讀。不僅僅是代碼——你遲早都要熟知代碼。閱讀Slack過(guò)往的聊天記錄。閱讀提交消息。閱讀PR中的注釋。閱讀數(shù)據(jù)庫(kù)結(jié)構(gòu)。閱讀事故報(bào)告。閱讀文檔以及文檔的修改記錄。不要認(rèn)為這些工作沒(méi)有意義。你應(yīng)該像一塊海綿,吸收所有的背景知識(shí),即便目前你一頭霧水,也無(wú)需擔(dān)心。你還沒(méi)有正式開(kāi)始工作,所以只需不斷收集零落在各個(gè)角落的故事,堅(jiān)持一周或一個(gè)月你就會(huì)有所眉目。用直覺(jué)去感受大量的上下文,稍后就會(huì)有所幫助。

      十步教你如何接手別人的代碼

      結(jié)對(duì)編程

      請(qǐng)求別人和你結(jié)對(duì)編程。即便沒(méi)有人結(jié)對(duì)。即便你害怕結(jié)對(duì)。即便只有20分鐘。當(dāng)別人在編寫代碼的時(shí)候,坐在一旁觀看,即便這些代碼目前你還用不到。要求與別人結(jié)對(duì)編程,即便他們不太了解你需要修改的那部分代碼。團(tuán)隊(duì)中的每個(gè)人都積攢了大量的重要知識(shí)。這一個(gè)階段的工作是讓他們盡可能地將這知識(shí)傳輸給你。通常,你只需坐在一旁看他們寫代碼以及瀏覽代碼,就可以吸收大量信息,同時(shí)還可以幫助別人找出代碼中的拼寫錯(cuò)誤,

      十步教你如何接手別人的代碼

      提問(wèn)

      積極提問(wèn)。不要在乎哪些問(wèn)題太白癡。你的問(wèn)題很重要,因?yàn)檫@些問(wèn)題可能揭示了當(dāng)前團(tuán)隊(duì)沒(méi)有意識(shí)到的一些問(wèn)題。你的問(wèn)題很重要,因?yàn)槟悴槐刂酪磺?。既然你已?jīng)被錄取了,面試已經(jīng)結(jié)束了,那么你就是團(tuán)隊(duì)的一員,優(yōu)秀的開(kāi)發(fā)團(tuán)隊(duì)?wèi)?yīng)該互相幫助,沒(méi)有人會(huì)有優(yōu)越感。

      十步教你如何接手別人的代碼

      一位優(yōu)秀的經(jīng)理/項(xiàng)目經(jīng)理

      這一點(diǎn)上你可能無(wú)能為力(除非你本人就是經(jīng)理),但如果你的確是團(tuán)隊(duì)經(jīng)理的話,則需要分配給新來(lái)的開(kāi)發(fā)人員一些簡(jiǎn)單的任務(wù)。一般來(lái)說(shuō),這些都不是關(guān)鍵性的任務(wù),而且也許新成員會(huì)犯錯(cuò)。這些任務(wù)應(yīng)該是簡(jiǎn)單的功能或改bug,而且還應(yīng)該讓新成員接觸到盡可能多的代碼。理想情況下,你應(yīng)該確切地知道這些任務(wù)需要修改哪部分代碼,但你只能給出一些提示,比如:

      “我感覺(jué)有一些奇怪的nil值以某種方式傳遞到了這個(gè)方法中,你可以看看X類和Y類,我感覺(jué)這兩個(gè)類可能漏掉了某處錯(cuò)誤,然后不知怎地傳遞了錯(cuò)誤的數(shù)據(jù)?!?/p>

      十步教你如何接手別人的代碼

      澄清需求并尋求幫助

      在第一次修改代碼的時(shí)候,你需要搞清楚具體的需求。首先應(yīng)該確保大家的理解沒(méi)有偏差。如果你在某個(gè)任務(wù)上花費(fèi)的時(shí)間超出了預(yù)想,則應(yīng)該立即重新討論。尋求幫助,你沒(méi)有責(zé)任理解所有的代碼,每個(gè)人都有責(zé)任幫助你步入正常的工作。

      “我認(rèn)為我應(yīng)該修改這個(gè)視圖,所以整個(gè)下午我都在看X和Y,但還是沒(méi)搞清楚這個(gè)值從哪兒來(lái)的,你可不可以花半個(gè)小時(shí)看看這段代碼,然后幫我搞清楚問(wèn)題所在?”

      你可以表現(xiàn)出自己的弱勢(shì),在團(tuán)隊(duì)成員的幫助下學(xué)習(xí),這有助于提高團(tuán)隊(duì)的指導(dǎo)水平,而且教學(xué)互長(zhǎng),在向你解釋代碼的過(guò)程,他們也可以加深對(duì)代碼的理解。

      在向別人解釋代碼的時(shí)候,你完全可以說(shuō):“我……不太清楚這個(gè)方法,但我們應(yīng)該修復(fù)這個(gè)問(wèn)題?!?/p>

      十步教你如何接手別人的代碼

      放松心情

      有人雇傭你或讓你參與某個(gè)項(xiàng)目,是因?yàn)槿藗兿嘈拍悖皇菫榱丝简?yàn)的你的編程技術(shù)有多爛。適應(yīng)陌生的代碼庫(kù)需要一定的時(shí)間。有時(shí)候,還需要很多時(shí)間。但說(shuō)到底也只是一些代碼,而作為開(kāi)發(fā)你自然很懂代碼。雖然你可能還不熟悉眼前的代碼,但你也可以利用適應(yīng)的過(guò)程為團(tuán)隊(duì)創(chuàng)造價(jià)值。你要保持耐心、謙虛,同時(shí)還要密切關(guān)注大局,不要害怕花時(shí)間深入了解某個(gè)特定的功能。

      原文:https://medium.com/@ericstiens/10-thoughts-on-orienting-yourself-in-a-new-codebase-2c2e9f443de2


      【END】

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多