<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          如何快速成為go語言 contributor

          共 2166字,需瀏覽 5分鐘

           ·

          2021-03-07 22:20

          處于某種不可告人的目的,筆者需要為go倉庫貢獻(xiàn)代碼,而且是需要在最快的時間內(nèi)。有很多人把為go倉庫貢獻(xiàn)代碼看做是一種榮譽,在本文中,筆者將介紹自己為了實現(xiàn)這一目標(biāo)所做的一些嘗試。

          準(zhǔn)備工作

          第一步是要在網(wǎng)上收集足夠多的資料,這包括了什么是contributor、如何做一些基本的準(zhǔn)備工作從而提交代碼,并被審查。

          什么是contributor

          那么提交了什么樣的代碼才會被認(rèn)為是golang contributor?假如我修改了gopl的代碼算不算呢?

          在go語言主倉庫中有一個CONTRIBUTORS文件,里面記錄了所有的貢獻(xiàn)者,該文件是在每一個主版本發(fā)布時自動生成的,而生成的代碼就在 golang.org/x/build/cmd/updatecontrib 中。可以看到,不僅僅是主分支,一些周邊的工具,甚至是博客文章中出現(xiàn)的問題都可以被糾正。

          代碼提交準(zhǔn)備

          第二步是做一些準(zhǔn)備工作,官方有一個介紹https://golang.org/doc/contribute ,最正規(guī)的方式包括了賬號的認(rèn)證,Gerrit平臺的注冊,并學(xué)習(xí)Gerrit的使用方法。Gerrit是用于代碼審查的一個平臺。

          如果不想增加太多的心智負(fù)擔(dān),當(dāng)然一種更加簡單的方式是通過github 提交PR 請求,如果你是第一次提交,如下robot機(jī)器人會告訴你如何進(jìn)行簽名認(rèn)證。

          同時,你在github上的提交會同步到Gerrit上,robot機(jī)器人會告訴你對應(yīng)的Gerrit地址。

          學(xué)習(xí)其他contributor的經(jīng)驗

          網(wǎng)上有許多優(yōu)秀的文章講述心得體會。

          捕獵可能優(yōu)化的點

          把自己看做是一個獵手,而可能優(yōu)化的點就被稱為獵物。作為一個龐大的項目,始終會有很多不盡如人意的地方。筆者根據(jù)提交的難度,可以分為:修改錯別字、修改注釋與描述、完善測試、提高代碼風(fēng)格,修改bug、完成代碼中的todo事項、新的特性。

          越往后走其實就越不容易,Go語言每年會有幾個月的代碼凍結(jié)期,在此階段除了修復(fù)bug和完善文檔,其他代碼是沒有辦法合并進(jìn)入的。另外,新的特性要想合并入go代碼中,花費的時間更加漫長。因為go語言內(nèi)部有自己的規(guī)劃、就好比泛型,錯誤處理都需要寫草案,經(jīng)歷很長時間的論證和明確的milestone。

          為了能夠快速的提交代碼,筆者選擇了下面的策略。

          • 選擇難度較低的入手

          • 不局限于找到一個優(yōu)化點,用質(zhì)量和數(shù)量增加合并幾率

          • 堅持每天花固定的時間狩獵

          筆者首先選擇了難度相對較低的幾個步驟出發(fā)。分別為修改錯別字、修改注釋與描述、修改bug。

          修改錯別字

          筆者用了一些工具來識別源碼中可能出現(xiàn)的拼寫錯誤。其中包括了word的拼寫審查,和肉眼觀察。借助人都會犯錯的概率論視角,下圖就是筆者提交的第一個代碼,用了最小的代價,一個單詞!

          修改注釋與描述

          其實這也是相對較容易的一步,這種提高包括了注釋中可能的描述錯誤或者更好的描述。可以選擇自己比較熟悉的代碼。筆者選擇了垃圾回收那一部分的代碼,主要是那一部分代碼注釋非常多,從概率上講比較有出錯的可能性。筆者每天花費了一些時間專門閱讀注釋,查找錯誤。最終還是發(fā)現(xiàn)了描述錯誤的地方,得到了aclements大神的認(rèn)可。

          修改bug

          在生產(chǎn)中,要自己去發(fā)現(xiàn)go語言中可能的bug也不是那么容易的事情,因為用的人多了之后,代碼是經(jīng)受過考驗的,一些大的問題很快就被修復(fù)了。在github 上每天都會有人提出一些issue,這個時候比較好的就是守株待兔,每天刷一下issue看看有什么問題。選擇自己能力范圍里的issue,調(diào)研并進(jìn)行修復(fù)。一般時間越久的issue越棘手。

          代碼審查

          代碼審查是非常重要的環(huán)節(jié),要想代碼能夠得到合并,至少要有兩位指定成員的代碼review并認(rèn)可。

          選擇review成員

          第一步就是要選擇正確的給你review代碼的人,review可能是自動生成的,但是我們可以對其進(jìn)行添加了刪除,選擇最適合的審核人。如果你沒有添加review,那么你的提交再優(yōu)秀都可能沒有人看到。


          正確規(guī)范的提交

          commit消息和描述要符合規(guī)范,這可以提高被合并的幾率。不符合規(guī)范的是不可能能夠合并的。查看提交規(guī)范:https://golang.org/wiki/CommitMessage

          多輪審核

          當(dāng)你提交的代碼越復(fù)雜,經(jīng)常會看到review會給你提供很多的建議,這個時候要逐一討論并進(jìn)行修改。多次提交代碼,直到代碼被認(rèn)可merge。

          總結(jié)

          本文講述了筆者為了快速為go倉庫貢獻(xiàn)代碼所做的一些嘗試。這其中包括了準(zhǔn)備工作、捕獵可能優(yōu)化的點、以及代碼審查策略。

          希望大家不要像我一樣這么著急,用高質(zhì)量的improvement證明自己無愧是golang contributor.



          推薦閱讀


          福利

          我為大家整理了一份從入門到進(jìn)階的Go學(xué)習(xí)資料禮包,包含學(xué)習(xí)建議:入門看什么,進(jìn)階看什么。關(guān)注公眾號 「polarisxu」,回復(fù) ebook 獲取;還可以回復(fù)「進(jìn)群」,和數(shù)萬 Gopher 交流學(xué)習(xí)。

          瀏覽 60
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产视频久久 | 天天操天天干天天舔 | www.逼特逼视频 | 午夜高清性爱视频 | 高清无码在线看 |