1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        在 GitHub 上提交代碼必備指南!

        共 4109字,需瀏覽 9分鐘

         ·

        2021-06-08 21:28

        微信搜索逆鋒起筆關(guān)注后回復(fù)編程pdf
        領(lǐng)取編程大佬們所推薦的 23 種編程資料!

        【CSDN 編者按】你是否經(jīng)常參與開(kāi)源項(xiàng)目?如果在 GitHub 上參與開(kāi)源項(xiàng)目的 Pull Request,你知道正確的做法是什么嗎?別擔(dān)心,本文為你準(zhǔn)備了詳細(xì)的指南,希望對(duì)你有一定裨益。

        作者 | Nick Skelton

        譯者 | 彎月  責(zé)編 | 蘇宓

        出品 | CSDN(ID:CSDNnews)

        以下為譯文:

         1 

        如果你是 PR 的作者


        1. PR 不宜過(guò)大

        將拉取請(qǐng)求(Pull Request,即 PR)控制在很小是一門藝術(shù)。在編寫(xiě)代碼的時(shí)候,你經(jīng)常會(huì)有重寫(xiě)、重構(gòu)代碼或整理代碼的格式的沖動(dòng),但總的來(lái)說(shuō),優(yōu)秀的開(kāi)發(fā)人員會(huì)抵制一次性修改所有內(nèi)容的誘惑。他們會(huì)集中一個(gè)目標(biāo),并將需要更改的代碼量降到最低。有些人甚至?xí)嗷ケ容^“刪除的代碼行數(shù)”與“增加的代碼行數(shù)”比率。如果你需要重構(gòu)和優(yōu)化代碼,那么請(qǐng)分別進(jìn)行。不要找借口將所有改動(dòng)都塞到一個(gè)  PR 中,這是懶惰。

        相反,你應(yīng)該想辦法將 PR 控制在很小,這才是創(chuàng)造力。

        2. 自我審查

        創(chuàng)建好 PR 后,你應(yīng)該進(jìn)行全面的自我審查。在完成一段代碼之后,你可能迫不及待地想將代碼推送到 PR,然后等著其他人發(fā)現(xiàn)錯(cuò)誤,尤其是你花了好幾天的時(shí)間完成了一項(xiàng)比較大的改動(dòng)時(shí)。別偷懶,要自律,你的工作還沒(méi)有結(jié)束。

        你可以在自我審查中,問(wèn)問(wèn)自己:“這個(gè)名字好嗎?有沒(méi)有更好的?”或者,“這個(gè)真的可以為 null 嗎?”通過(guò)這樣的問(wèn)題,你不僅可以檢查自己的代碼,還可以在日常的編程工作中建立自我反思的好習(xí)慣。換句話說(shuō),這種自我審查的過(guò)程可以讓你成為更好的開(kāi)發(fā)人員。

        3. 去掉不必要的文件

        在自我審查的時(shí)候,你會(huì)經(jīng)常發(fā)現(xiàn)某個(gè)文件只改了一些空格、調(diào)整了格式、優(yōu)化了導(dǎo)入或一些文本更改,這些改動(dòng)對(duì) PR 根本沒(méi)有影響。

        遇到這種情況,你應(yīng)該重新打開(kāi)分支,將這些文件還原回去,你只是做了一些略微的改進(jìn),功能上沒(méi)有變化,而且多余的文件出現(xiàn)自 PR 中只會(huì)給審核代碼的人帶來(lái)負(fù)擔(dān),尤其是 PR 比較大的時(shí)候。

        如果格式化很重要,請(qǐng)創(chuàng)建一個(gè)單獨(dú)的 PR,然后在 CI 中添加一個(gè)格式化的工具,并利用工具整理整個(gè)應(yīng)用的格式。但是,避免這些不必要的文件很重要,這是對(duì)代碼審核者的尊重。此外,這些無(wú)關(guān)緊要的變動(dòng)還會(huì)污染 git 的歷史記錄,讓人們很難通過(guò)這些歷史記錄找到文件某些更改背后的意圖。

        4. 創(chuàng)建有意義的標(biāo)題

        一般,標(biāo)題我們都會(huì)照抄分支名稱或相關(guān)的票據(jù)。關(guān)于標(biāo)題的規(guī)則只有一條,即遵循某種約定,建立簡(jiǎn)潔而又意義的標(biāo)題,基本思想與分支命名一樣。

        創(chuàng)建拉取請(qǐng)求也是創(chuàng)建文檔,保持拉取請(qǐng)求的歷史記錄易于瀏覽,可以方便搜索過(guò)去的決策和思考過(guò)程。關(guān)注公眾號(hào):逆鋒起筆,獲取大佬們推薦的編程資料。

        5. 有意義的描述

        再次強(qiáng)調(diào),你應(yīng)該將 PR 視為文檔,一篇經(jīng)常會(huì)被閱讀的文檔。PR 的描述應(yīng)盡可能全面,但要簡(jiǎn)潔,盡可能做到透過(guò)描述看懂你的意圖和決策過(guò)程,無(wú)需花時(shí)間討論。

        有一種有效的方法是建立 PR 模板。模板的內(nèi)容應(yīng)與團(tuán)隊(duì)達(dá)成共識(shí),并隨時(shí)間的推移進(jìn)行開(kāi)發(fā)和調(diào)整,下面是給新手的一些建議:
        • 變更概述。你需要說(shuō)明的 PR 中沒(méi)有包含的方案(經(jīng)過(guò)評(píng)估后被放棄的替代方法)。這樣可以避免與審核代碼的人重復(fù)討論你已經(jīng)嘗試過(guò)的方案。

        • 面向?qū)徍苏叩膯?wèn)題/注釋。你希望審核者對(duì)于哪些代碼提供一些具體的建議?代碼的哪些部分很安全,可以忽略?你重構(gòu)了哪部分代碼,變動(dòng)的文件雖然很多,但沒(méi)有任何功能上的影響。告訴審核者可以放心地跳過(guò)哪部分 PR,他們會(huì)非常感謝你。

        • 如何測(cè)試/演示。對(duì)于 QA 來(lái)說(shuō),這樣的說(shuō)明非常便利,比如預(yù)發(fā)布環(huán)境中的用戶和密碼、配置和設(shè)置說(shuō)明等等,任何可以幫助審核者測(cè)試修改的內(nèi)容。

        • 附件:屏幕截圖和視頻。圖片和視頻的表達(dá)能力更強(qiáng)。變化前后的演示非常便利

          。

        6. 確認(rèn)每條評(píng)論

        在遠(yuǎn)程異步通信中,有一點(diǎn)很重要,你需要向?qū)Ψ絺鬟_(dá)你看到了評(píng)論。有時(shí),只需要一個(gè)簡(jiǎn)單的表情符號(hào)。無(wú)論評(píng)論多小,都不能忽視,尤其是在新團(tuán)隊(duì)中。一旦與團(tuán)隊(duì)建立融洽的關(guān)系,你就可以順其自然了,因?yàn)槟銈冎g互相都了解。但是,剛開(kāi)始的時(shí)候,一定要有禮貌,注意言辭,以及個(gè)人的行為。

        7. 合并需要征求每個(gè)人的同意

        說(shuō)起禮貌,你應(yīng)該耐心等待別人提出意見(jiàn),然后積極地給予回應(yīng)。如果等待的時(shí)間過(guò)長(zhǎng),你可以通過(guò)電子郵件和即時(shí)消息詢問(wèn),或者直接去找他們,讓他們知道你還在等待。

        在我看來(lái),如果你們團(tuán)隊(duì)成員超過(guò)了 3 個(gè)人,則不必讓每個(gè)人都審查每個(gè) PR。制定一個(gè)系統(tǒng)來(lái)確定由誰(shuí)來(lái)審查每個(gè) PR,比如讓每個(gè)人負(fù)責(zé)一些模塊;如果你是新手,則可以讓架構(gòu)師/高級(jí)開(kāi)發(fā)人員審查你所有的 PR。

         2 

        如果你是審查者


        下面的一些建議也同樣適用于代碼作者回復(fù)評(píng)論。

        8. 簽出代碼

        你的計(jì)算機(jī)上應(yīng)該始終保有一個(gè)項(xiàng)目的兩個(gè)克?。阂粋€(gè)用于正常工作,一個(gè)用于審查 PR。這樣審查 PR 的時(shí)候,就不會(huì)影響到當(dāng)前的任務(wù)了。

        簽出分支后,點(diǎn)擊構(gòu)建,并保持運(yùn)行狀態(tài),同時(shí)切換到瀏覽器。

        9. 閱讀標(biāo)題和說(shuō)明

        如果有人花了很大力氣編寫(xiě)了自己的 PR 指南,那么你至少應(yīng)該耐心地讀完。在等待PR在你的另一個(gè)項(xiàng)目克隆上構(gòu)建的同時(shí),請(qǐng)閱讀相關(guān)的票據(jù),閱讀 PR 的標(biāo)題和說(shuō)明,并提出你的審核意見(jiàn)。

        10. 在本地驗(yàn)證你的建議

        如果發(fā)現(xiàn)可以改進(jìn)的地方時(shí),請(qǐng)嘗試在本地克隆中修改代碼。當(dāng)你是項(xiàng)目的新成員時(shí),這一點(diǎn)尤為重要。即便你提出的建議無(wú)法實(shí)現(xiàn),或者甚至根本編譯不過(guò)去,也不必感到尷尬。在自己的 IDE 中修改代碼,如果成功,你會(huì)收獲滿滿的成就感;如果失敗,你也會(huì)慶幸沒(méi)有打擾到別人。

        在確認(rèn)你的建議可行后,不要讓自己的工作白費(fèi),你可以將代碼復(fù)制過(guò)去,放入 PR 注釋中,這樣作者就可以直接復(fù)制了。

        11. 如果建議太大,就直接寫(xiě)成 PR

        如果你發(fā)現(xiàn)自己的建議太大,那就不要浪費(fèi)精力,直接在他們的分支上建個(gè)分支,然后創(chuàng)建一個(gè) PR,合并到原來(lái)的 PR 中。這種 PR 不需要常規(guī) PR 的花哨功能,因?yàn)樗皇窃u(píng)論的一部分,可以讓你們做進(jìn)一步的探討,然后由原作者考慮修改,最后如果一切順利,則合并到主 PR 中。

        12. 抵制評(píng)論的沖動(dòng)

        發(fā)表評(píng)論時(shí),我們往往情不自禁說(shuō)個(gè)滔滔不絕??酥七@種情緒的關(guān)鍵是設(shè)身處地為他人著想。不要忘了回顧一下所有的評(píng)論,仔細(xì)想一想有多少評(píng)論確實(shí)會(huì)被多方接受,而且能盡快實(shí)現(xiàn)。

        以下是一些關(guān)于評(píng)論的技巧:

        13. 如果沒(méi)有更好的替代方案,請(qǐng)不要發(fā)表評(píng)論

        如果你不喜歡代碼的寫(xiě)法,請(qǐng)?zhí)岢龈玫姆椒ǎ駝t還是閉嘴。

        14. 要有信心,不要偷懶

        不要使用“也許”、“我不知道”、“如果”、“我不確定”之類暗示懷疑的詞語(yǔ)。如果不確定,那么請(qǐng)反省一下,為什么你不確定。或者也可以做一些實(shí)驗(yàn)和研究,找回自信。

        15. 修改代碼之前先模仿原來(lái)的風(fēng)格

        每個(gè)人都有自己的風(fēng)格,而且都對(duì)比較執(zhí)著于自己的風(fēng)格。剛加入新團(tuán)隊(duì)時(shí),現(xiàn)有成員通常都會(huì)捍衛(wèi)項(xiàng)目的現(xiàn)狀,而新成員則會(huì)表達(dá)“他們的前一個(gè)項(xiàng)目有何不同,或者如何更好地完成工作”等看法。

        適應(yīng)現(xiàn)有的風(fēng)格,可以讓你盡快融入心團(tuán)隊(duì),而他們也更愿意針對(duì)某些重要的方面提出建議,比如 SDK 的選擇、體系結(jié)構(gòu)決策以及模式和實(shí)踐等等。在你完全掌握了他們的風(fēng)格之后,再提出現(xiàn)代化的風(fēng)格,他們更容易接受。

        16. 挑剔是好事 

        有時(shí),同事審查你的代碼,只提出了一些風(fēng)格上的意見(jiàn),看似很挑剔,你也會(huì)感到沮喪。 

        但是,你應(yīng)該這樣想:審查者已經(jīng)很難找出你代碼中的實(shí)際問(wèn)題。 

        遇到挑剔的意見(jiàn),比如關(guān)于風(fēng)格的注釋,你可以禮貌地強(qiáng)調(diào) IDE 工具可以自動(dòng)處理好 90% 的樣式問(wèn)題。

        17. 面對(duì)面的交流

        有時(shí),你們兩人針對(duì)某個(gè) PR 的評(píng)論,反復(fù)爭(zhēng)論不休。這個(gè)時(shí)候,你應(yīng)該冷靜一下,然后寫(xiě)一封郵件,約個(gè)時(shí)間面對(duì)面的交流。

        網(wǎng)上的交流有時(shí)候來(lái)來(lái)回回,很浪費(fèi)時(shí)間。還不如到會(huì)議室,面對(duì)面的交流,但切記冷靜,反復(fù)思考自己的觀點(diǎn),而且一定要保持客觀。面對(duì)面交流的目的是尋找最佳解決方案。

        18. 心平氣和

        建立 PR,難免被審查者指出問(wèn)題。所以,首先最重要的就是:挑刺。但是你需要專業(yè)地挑刺,不要帶個(gè)人情緒。

        請(qǐng)注意解讀評(píng)論的方式,有些人并不是故意的,他們只是沒(méi)有過(guò)多的思考,很著急,或表達(dá)能力不夠好。他們提的意見(jiàn)都是出自善意。

        19. 沒(méi)有緊急的 PR

        PR 之所以流行,有兩個(gè)原因:
        1. 異步交流。開(kāi)發(fā)人員可以隨時(shí)進(jìn)行審查和響應(yīng),這樣可以避免自己的工作被打斷或受干擾。

        2. 質(zhì)量保證。在代碼進(jìn)入目標(biāo)分支之前,對(duì)其進(jìn)行檢查和測(cè)試,以確保目標(biāo)分支保持干凈。通過(guò)隊(duì)友發(fā)現(xiàn)日常使用的代碼中的潛在問(wèn)題。

        3. 如果你必須在 10 分鐘內(nèi)合并分支(一般非常不推薦這種做法),那么就不要發(fā)送消息要求別人立即審核代碼,直接合并就行了。不要為了流程而打擾別人。如果你必須在短時(shí)間內(nèi)合并分支,那么就找一個(gè)人進(jìn)行結(jié)對(duì)編程,或者直接合并PR。


         3 

        總結(jié)


        PR 是一個(gè)很好的習(xí)慣。在過(guò)去十年中,我所從事的大多數(shù)項(xiàng)目都采用了這種標(biāo)準(zhǔn)的做法,如今我仍在新項(xiàng)目中學(xué)習(xí)關(guān)于 PR 的新知識(shí)和流程。

        逆鋒起筆是一個(gè)專注于程序員圈子的技術(shù)平臺(tái),你可以收獲最新技術(shù)動(dòng)態(tài)、最新內(nèi)測(cè)資格、BAT等大廠大佬的經(jīng)驗(yàn)、增長(zhǎng)自身、學(xué)習(xí)資料、職業(yè)路線、賺錢思維,微信搜索readdot關(guān)注!

        上述建議不一定適合所有項(xiàng)目,與制定嚴(yán)格的規(guī)則和流程相比,組建團(tuán)隊(duì)更為重要。在團(tuán)隊(duì)中,我們要友善待人,但也要有信心和紀(jì)律,同時(shí)以身作則,嚴(yán)格要求自己。

        程序員必備的 10 大 GitHub 倉(cāng)庫(kù)

        GitHub上 10 個(gè)超好看可視化面板

        GitHub 上最勵(lì)志的計(jì)算機(jī)自學(xué)教程

        提高 Github下載速度到 2MB/s

        GitHub 上 25 個(gè) Python 學(xué)習(xí)資源,墻裂推薦!


        支持下 
        瀏覽 85
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            91在线无码精品秘 传媒 | 久久久久久69精品 | 国产男女乱淫视频高清免费 | 成人无码无遮又大又爽 | 日本边添边摸边做边爱的图片 | 艳妇500篇短篇h系列最新章节 | 欧美高清久久 | 国产巨呦泬泬99精品 | 日本三级三级 | 三上悠亚持续高潮40分钟 |