如何新增原始檔?27個頂級目錄怎麼弄?適合一些“新手小白”

假設您剛加入了一家新公司和一個新團隊,開始編寫庫程式碼,您將面臨的第一個問題是:在哪裡新增團隊專案的原始檔?問得好,新團隊有三個用於新增檔案的源目錄,您可以確定要使用哪些檔案,哪些檔案由團隊成員使用,哪些檔案需要重建,SlackiOS團隊多年來在編寫庫方面做得很好,因為我幾次想構建一些原始檔,但是缺乏編碼庫的架構模式,而且近年來開發人員越來越多,所以我們來到這個團隊。

讓我從頂層開始瞭解

我們有大約13000個檔案(仍在增長),大約27個頂級目錄,Objective-C和Swift的混合檔案,以及大約40個iOS開發人員在monorepo中工作SlackiOSXcodeFileHierarchy2017,這些是所有檔案層次結構狀態的真實照片,新員工不斷抱怨進入編碼庫,而我們也習慣於操縱這些混亂的目錄,開始時的痛苦已經記不住了,我們有無數的原始碼目錄(特別是iOS、slackcoasdk和Slack目錄),在決定如何新增檔案之前,需要很長時間來確定目錄,另外,我們決定在編碼庫中新增新的工具,但是Xcode專案的當前狀態並不能很好地支援新新增工具的操作,所以,一組ios開發人員和我決定指定規則。

如何新增原始檔?27個頂級目錄怎麼弄?適合一些“新手小白”

3點規則,兩個步驟

1,讓任何新的和舊的開發人員快速方便地新增新檔案,2,按照目錄中我們的設計模式3,在工具的幫助下,您可以使用簡單的層次結構來維護新資料夾,這將分為兩個步驟:首先將頂層目錄移動成一個連貫的序列(主目標目錄、擴充套件目錄、框架等),然後形成大任務原始檔夾,頂級目錄的移動沒有爭議,而且容易進行,可能需要幾個開發人員花幾個星期的時間在一起,在第一步中,我們學到了一些技巧,可以在後期運用,錯過高峰期處理大的移動,始終合併master,及時瀏覽評論,合併衝突並不是這個過程中唯一棘手的問題,實際上,我們可以使用xcodegen來更好地消除衝突,大多數衝突都存在於專案檔案中,我們還希望儲存git歷史記錄,這樣我們就可以隨時看到git和finder中的檔案,但我們更喜歡一種更簡單的方式,讓所有人員參與進來,拖放檔案到主頁。

如何新增原始檔?27個頂級目錄怎麼弄?適合一些“新手小白”

如何組建原始檔

現在是時候在iOS、slackcoasdk和Slack中處理原始檔,並將它們全部移到App或source中,說實話,小編很害怕這一部分,我們需要有一個清晰的模型,允許團隊中的所有開發人員參與,規則和工具必須確保它易於移動,並且工程師可以清楚地看到他們是否犯了錯誤,小編對層次結構的模式進行了大量的調查,發現關於資料夾形成的文章很少,Uber在這篇文章中描述了他們是如何搬到monorepo的(https://eng。uber。com/ios-monorepo/)。這為我們如何將程式碼庫劃分為小模組(小規模)提供了靈感。

如何新增原始檔?27個頂級目錄怎麼弄?適合一些“新手小白”

為團隊提供的三個選擇

功能結構,主題(基於體系結構的組織),本體(基於關係或相似分組的組織),團隊將首先關注高階特性,然後在主題或特性目錄中使用MVVM+C,移動原始檔是一個漫長而複雜的專案,處理合併衝突會讓人生氣,搜尋檔名空間以檢視是否所有功能檔案都被拖放到目錄中,這比最初想象的更難記住,而且大多數移動的檔案與開始規則中設定的資料夾不匹配,幸運的是,一些勇士挺身而出,將iOS、SlackCocoaSDK和Slack遷移到應用程式/原始碼上,Danger是一種將用於持續整合系統的工具,它可以在提交後執行自動檢查,並向PRS傳送警告和錯誤訊息。

如何新增原始檔?27個頂級目錄怎麼弄?適合一些“新手小白”

還沒有結束,我們還需要將內容移動到新的源目錄和App/source中,以下是“資料夾管理”過程中的一些規則:1,資料夾名稱不需要額外的空間(Bazel等工具不是很有效),2,不要顛倒“Helper”或“Uitility”等檔案的順序3,共定位測試(如果測試和原始碼位於同一個函式目錄中,有什麼方法更容易找到測試?)4,分類檔案和資料夾!(誰不喜歡字母順序?)5,請確保該檔案位於資料夾中,並且該檔案與相應的目標頂級目錄相關聯。