久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx

井井有條的代碼庫(kù),才是工作中最大的幸福

2021-02-13    分類: 網(wǎng)站建設(shè)

圖源:unsplash

假設(shè)你剛剛加入新的公司新的團(tuán)隊(duì),要開始接觸編碼庫(kù)相關(guān)的工作。你會(huì)面臨的第一個(gè)問題就是:在哪添加團(tuán)隊(duì)項(xiàng)目的源文件呢?

問得好。新團(tuán)隊(duì)有三個(gè)源目錄可供添加文件,你得分清哪個(gè)是你想用的,哪個(gè)是組員用的,哪里的文件是需要重構(gòu)的。

Slack iOS團(tuán)隊(duì)多年來在編碼庫(kù)方面都做的較好。因?yàn)楹脦状蜗胍M建一些源文件,但又缺少編碼庫(kù)的架構(gòu)模式,再者是近些年開發(fā)人員越來越多,我們來到了這個(gè)團(tuán)隊(duì)。


從頂層開始

我們大約有13000個(gè)文件(還在不斷增多),27個(gè)左右的頂層目錄,Objective-C和Swift的混合文件,大約有40個(gè)iOS開發(fā)人員在一個(gè)monorepo中工作。

Slack iOS Xcode File Hierarchy2017

這些是所有文件層次結(jié)構(gòu)狀態(tài)的真實(shí)照片。新來的員工都在不斷抱怨入了編碼庫(kù),而我們已經(jīng)習(xí)慣操控這些混亂的目錄,一開始的痛苦已經(jīng)不記得了。

我們有無數(shù)的源代碼目錄(特別是iOS,SlackCocoaSDK和Slack目錄),而且確定目錄要耗費(fèi)好長(zhǎng)時(shí)間,然后再?zèng)Q定如何添加文件。此外,我們決定給編碼庫(kù)增添新的工具,但是目前Xcode項(xiàng)目的狀態(tài)不能很好地支持新增添工具的運(yùn)行。

所以,我和一組ios開發(fā)人員決定開始制定以下幾點(diǎn)規(guī)則:

1.讓任何新老開發(fā)人員都能快速方便地添加新文件。

2.在目錄中遵循我們的設(shè)計(jì)模式

3.借助工具能夠自己維持新的且層次結(jié)構(gòu)簡(jiǎn)潔的文件夾

這將分為兩個(gè)步驟:先將頂層目錄移動(dòng)到連貫的序列中(主要目標(biāo)目錄、擴(kuò)展目錄、框架等),然后是大任務(wù)——源文件夾的組建。

頂層目錄的移動(dòng)不存在爭(zhēng)議,也不難進(jìn)行??赡苄枰獛讉€(gè)開發(fā)員一同花費(fèi)幾周的時(shí)間。首次移動(dòng)中,我們學(xué)到了一些后面階段能用到的技——錯(cuò)過高峰期處理大的移動(dòng),始終合并master,及時(shí)瀏覽評(píng)論。

合并沖突不是過程中唯一棘手的事情,實(shí)際上我們可以用xcodegen更好地消除沖突,大部分沖突都存在于項(xiàng)目文件中。我們也想保存git歷史記錄,能一直一目了然地看到git和finder中的文件。但我們傾向更簡(jiǎn)單的方式,讓所有人員參與進(jìn)來,拖放文件到主頁(yè)。

Slack iOS Xcode Hierarchy 2017(左) and 2018 (右)

從2018年9月的這張圖可以看出,我們已經(jīng)能夠成功組建頂層目錄,讓每一個(gè)目錄都適用且都是頂層目。


組建源文件

現(xiàn)在是時(shí)候處理iOS、SlackCocoaSDK和Slack中的源文件,把它們?nèi)恳苿?dòng)到App或Source中。

老實(shí)說,筆者很怕這一部分。我們需要有一個(gè)清晰的模式,能讓團(tuán)隊(duì)所有的開發(fā)員都參與進(jìn)來,規(guī)則和工具都要確保移動(dòng)方便,工程師能清楚地看到自己是否出現(xiàn)失誤。

圖源:unsplash

筆者對(duì)層次結(jié)構(gòu)的模式展開了很多調(diào)查,竟然發(fā)現(xiàn)關(guān)于文件夾組建的文章少之又少。Uber在這篇文章中寫了他們是如何移動(dòng)到monorepo中的(https://eng.uber.com/ios-monorepo/)。這對(duì)我們?nèi)绾螌⒋a庫(kù)分為小模塊(規(guī)模較小)提供了啟發(fā)。

最后筆者為團(tuán)隊(duì)提供了三個(gè)選擇:

· 功能構(gòu)建

· 主題(基于體系結(jié)構(gòu)的組織)

· 本體(基于關(guān)系或類似分組的組織)

團(tuán)隊(duì)會(huì)先集中主力在高級(jí)功能,然后才是主題或功能目錄中的MVVM+C。這是新結(jié)構(gòu)中的一個(gè)文件夾:

/FeatureFolder
 /Coordinators
 /Models
 /Tests
 /Functional
 /Mocks
 /Unit /ViewModels
 /Views

移動(dòng)源文件是一項(xiàng)冗長(zhǎng)繁雜的工程。處理合并沖突讓人冒火,搜索文件名稱空間來看是否將所有功能文件都拖拽到目錄中要比最初想得更難記住,而且移動(dòng)的大部分文件都不符合剛開始設(shè)定的文件夾規(guī)則。

不過好在有一些勇士挺身而出,做了偉大的舉措——將iOS,SlackCocoaSDK, 和Slack都移動(dòng)到App/Source中。

2020年1月層次結(jié)構(gòu)文件夾的截圖:

Slack Xcode File Hierarchy2020

在移動(dòng)這三個(gè)大型源目錄時(shí),我們提出Danger規(guī)則會(huì)阻止向這些目錄中添加文件,因此會(huì)開始用我們的新模式。

Danger是持續(xù)集成系統(tǒng)中會(huì)用到的工具,可以執(zhí)行提交后的自動(dòng)檢查,同時(shí)將警告和錯(cuò)誤信息發(fā)到PRS上。這是大致模樣:

has_slack_directory_additions= !git.added_files.grep(/Slack/).empty?has_slackcocoasdk_directory_additions =!git.added_files.grep(/SlackCocoaSDK/).empty?has_ios_directory_additions =!git.added_files.grep(/iOS/).empty?if has_slack_directory_additions ||has_slackcocoasdk_directory_additions || has_ios_directory_additions fail(‘This PR is introducing new files intodirectories that are
 closed for adding new files. Pleaseadd files to App/Source using
 the new convention found in<ahref=”…Adding-a-file-to-Slack- 
 iOS…”>Adding a file to SlackiOS</a>’, sticky: false)end


遵循Linter

到這里還沒有結(jié)束,我們?nèi)孕枰苿?dòng)新源目錄、App/Source中的內(nèi)容。這里列了“文件夾內(nèi)務(wù)管理”過程中的一些規(guī)則:

1.文件夾名稱不用留多余的空間(類似Bazel這類工具效果不是很好)

2.不要像“Helper”或“Uitility”那樣顛倒文件順序

3.共同定位測(cè)試(如果測(cè)試與源代碼都位于同一個(gè)功能目錄中,什么樣的方式能更容易找到測(cè)試呢?)

4.分類文件和文件夾!(誰不愛字母排序??。?/p>

5.確保文件處于文件夾中,并且文件要與合適的目標(biāo)頂層目錄相關(guān)聯(lián)。

圖源:unsplash

有一條規(guī)則是真的需要共同定位測(cè)試,所以我們選擇Danger 規(guī)則。任何添加了新文件的新PR都無法加到App/Tests中。

大致如下:

has_app_test_directory_additions= !git.added_files.grep(/Test/).empty?if has_app_test_directory_additions fail(‘This PR is introducing new files intodirectories that are
 closed for adding new files. Pleaseadd co-locate tests using the new convention found in <ahref=”link-to-our-housekeeping-
 doc”>iOS Folder HousekeepingChecklist</a> or feel free to ask in #ios-testing-folder-structure’,sticky: false)end

文件夾組創(chuàng)建一個(gè)Slack渠道,以供人們?cè)诓淮_定是否添加文件的時(shí)候進(jìn)行咨詢。對(duì)于往哪添加文件的困惑會(huì)比你想的多,甚至小移動(dòng)都會(huì)帶來很大麻煩。

我們已經(jīng)有了很大的進(jìn)步,得到了來自更優(yōu)秀iOS團(tuán)隊(duì)的支持,但等待我們的是更多的事情。

這不是一個(gè)人能做好的工作,你需要跟編碼庫(kù)工作環(huán)節(jié)中的每一位人員協(xié)同合作起來。你需要更好的團(tuán)隊(duì),并不只是為了移動(dòng)文件,而是修飾規(guī)則,添加更多的工具。有更多人的參與意味著很多人會(huì)從中學(xué)習(xí),之后便有能力教他人如何在編碼庫(kù)工作中添加文件。

成功和幸福的秘方很簡(jiǎn)單:假如你跟我們一樣有monorepo,那就組建一個(gè)團(tuán)隊(duì),制定硬性且能快速實(shí)現(xiàn)的規(guī)定。

規(guī)則可以被打破,你跟任何開發(fā)員都有機(jī)會(huì)討論,你需要核心隊(duì)伍來創(chuàng)建支持規(guī)則的工具,讓文件組建更水到渠成。核心成員也可以花些時(shí)間思考尋找好文件結(jié)構(gòu),來服務(wù)于團(tuán)隊(duì)組織或工作模式。

圖源:unsplash

當(dāng)開發(fā)員明白在哪加文件、以什么樣的方式可以加速開發(fā)、讓自己在代碼庫(kù)的工作環(huán)境中更加自在時(shí),世界就會(huì)變得不同。

SwiftLint、Danger、本地腳本這些工具都會(huì)助你一臂之力。但有一點(diǎn)需要提醒,那就是首先你需要明白工具在何處有用,這通常需要?jiǎng)觿?dòng)手指。

使用工具,共同參與,像解決其他對(duì)公司不利的問題一樣處理它。這是一件超值的事情,會(huì)讓大家更輕松地找到或添加文件,幫助開發(fā)員理解編碼庫(kù)的架構(gòu)模式。

幸福是什么?是井井有條的代碼庫(kù),是全體成員的思考和智慧,是體驗(yàn)感與學(xué)習(xí)的共贏。這就是幸福呀!

文章名稱:井井有條的代碼庫(kù),才是工作中最大的幸福
瀏覽路徑:http://www.js-pz168.com/news45/100695.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、電子商務(wù)網(wǎng)站改版、網(wǎng)站策劃、小程序開發(fā)、標(biāo)簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名
久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx
亚洲第一av色| av毛片久久久久**hd| 99这里只有精品| 欧洲高清一区二区| 欧美日韩黄色影视| 国产亚洲欧美激情| 午夜精品在线视频一区| 国产成人综合自拍| 久久久久综合一区二区三区| 在线观看欧美精品| 欧美激情一区二区三区| 偷偷要91色婷婷| 91在线你懂得| 在线成人av电影| 久久精品日韩一区二区三区| 天天综合天天做天天综合| 成人h动漫精品| 亚洲在线视频一区二区| 久久综合九色综合欧美98| 亚洲成av人片一区二区| 9l国产精品久久久久麻豆| 一区二区视频在线免费| 久久理论电影网| 三级亚洲高清视频| caoporn国产精品免费公开| 色婷婷精品大在线视频| 国产人久久人人人人爽| 久久 天天综合| 免费久久99精品国产自| 在线91免费看| 一区二区三区国产豹纹内裤在线| 国产成人免费视频网站高清观看视频 | 欧美福利一区二区| 成人欧美一区二区三区白人| 国产精品正在播放| 日韩高清dvd| 久久久久久久久免费| 亚洲6080在线| 国产伦精品一区二区三区视频免费 | 99蜜桃在线观看免费视频网站| 中文字幕色一区二区| 中文字幕av资源一区| 国产精选一区二区三区| 日韩片电影在线免费观看| 欧美精品一区二区三区一线天视频| 丝袜美腿亚洲综合| 精品欧美一区二区三区久久久| 欧美一区二区三区四区高清| 亚欧色一区w666天堂| 国产 高清 精品 在线 a| 91精品国产综合久久精品图片| 亚洲网友自拍偷拍| 成人欧美一区二区三区黑人免费| 欧美日韩精品欧美日韩精品一| 亚洲综合在线第一页| 91一区二区三区| 欧美一区二视频| 日韩不卡免费视频| 欧美精品免费观看二区| 久久久综合网站| 国产成人亚洲综合a∨婷婷| 在线免费观看成人| 亚洲欧美色一区| 91久久久一线二线三线品牌| 777奇米成人网| 免费成人美女在线观看| 品久久久久久久久久96高清| 国产日韩欧美电影| 成人免费高清在线观看| 欧美日韩一区二区三区不卡| 无码av免费一区二区三区试看 | 成人av影院在线| 欧美日韩在线播| 日韩制服丝袜av| 日韩免费毛片| 亚洲女子a中天字幕| 成人激情直播| 久久亚洲综合av| 懂色av一区二区三区免费观看| 欧美曰成人黄网| 日韩vs国产vs欧美| 亚洲精美视频| 一区二区高清免费观看影视大全| 国产亚洲一区二区三区在线播放| 久久久久久久久久久黄色| 成人午夜在线免费| 欧美一区二区在线观看| 黄一区二区三区| 欧美在线你懂的| 日本欧美久久久久免费播放网| 亚洲一二区在线| 亚洲成a人片在线不卡一二三区| 欧美日韩一区二区三区在线视频| 国产精品国产精品国产专区不蜜 | 亚洲乱码国产乱码精品天美传媒| 亚洲美女区一区| 久久久久一区二区三区| 国产美女99p| 中文字幕不卡的av| 国产精品免费一区二区| 国产日韩欧美激情| 成人欧美一区二区| 中文字幕av一区二区三区| 91一区二区三区| 国产日韩欧美电影| 成人久久18免费网站漫画| 国产偷国产偷精品高清尤物| 91美女视频网站| 国产调教视频一区| 国产伦精品一区二区三区四区视频 | 成人小视频免费在线观看| 日韩欧美一区二区三区在线| 国产高清一区日本| 日韩三级伦理片妻子的秘密按摩| 成人免费高清视频在线观看| 精品三级在线观看| 51成人做爰www免费看网站| 国产午夜亚洲精品不卡| 国产一区二区三区四区五区在线 | 欧美一区二区大片| 不卡一卡二卡三乱码免费网站| 精品成人免费观看| www.成人av.com| ●精品国产综合乱码久久久久| 欧美性bbwbbwbbwhd| 亚洲成a人v欧美综合天堂| 91高清视频免费看| 国产一区二区影院| 亚洲精品在线一区二区| 高清视频一区| 曰韩精品一区二区| 永久久久久久| 国产最新精品免费| 久久综合国产精品| 国产伦精品一区二区三区免 | 久久日韩精品一区二区五区| 国产传媒一区二区三区| 亚洲人成精品久久久久| 亚洲视频在线观看日本a| 蜜桃视频在线观看一区二区| 91精品国产麻豆| 97在线中文字幕| 亚洲裸体xxx| 欧洲生活片亚洲生活在线观看| 国产精品18久久久久久久网站| 久久久午夜精品理论片中文字幕| 精品国产免费一区二区三区| 亚洲大尺度视频在线观看| 欧美日韩精品三区| 91网址在线看| 一个色综合av| 欧美吻胸吃奶大尺度电影| 不卡一区二区三区四区| 亚洲欧洲成人av每日更新| 伊人狠狠色丁香综合尤物| 久久综合国产精品| 日本精品国语自产拍在线观看| 免费观看久久久4p| 精品欧美一区二区三区精品久久| 国产一区不卡在线观看| 水野朝阳av一区二区三区| 欧美一二三区在线| 久99久在线| 美国十次综合导航| 久久久综合精品| 视频一区二区三区在线观看| 精品写真视频在线观看| 国产丝袜在线精品| 亚洲视频精品一区| 成人丝袜高跟foot| 一区二区三区免费| 欧美高清一级片在线| 鬼打鬼之黄金道士1992林正英| 亚洲第一激情av| 欧美成人乱码一区二区三区| 精品乱色一区二区中文字幕| 蜜芽一区二区三区| 国产亚洲综合色| 色婷婷综合在线| 91免费看视频| 丝袜诱惑亚洲看片| 久久久亚洲精品石原莉奈| 亚洲国产午夜伦理片大全在线观看网站 | 成人亚洲一区二区一| 亚洲黄一区二区三区| 日韩一区二区在线观看视频播放| 久久精品丝袜高跟鞋| 经典三级一区二区| 中文字幕一区二区三区av| 欧美日产国产精品| 久久av免费观看| 国产老妇另类xxxxx| 亚洲欧美日韩精品久久久久| 在线成人av网站| 欧美亚州在线观看| 成人性生交大片免费| 亚洲成人午夜电影| 久久久久久久久久久久电影| 色婷婷综合久久久久中文| 国产精品露出视频|