標籤:
這兩年,我一直在編寫並發布有品質的iOS 應用。我發現大多數的開發人員有直接跳進編碼應用程式的核心邏輯的傾向,因為這是樂趣所在。遵循流程開發是很無聊的。
我瞭解到最有效方式是,如果你提前花些時間正確設定項目,你將會為將來節省大量的時間。如果你是一位獨立開發人員,你可能意識不到下面提到的這些步驟的重要性。大多數優秀的應用程式都由團隊開發,如果遵循以下步驟,肯定能幫你減少挫敗感並提升應用品質。
1.為工程設定編碼風格規範
編碼風格規範指的是在使用特定語言寫代碼之前要明確遵守的風格和慣例,它包括類似於該使用tab鍵還是空格鍵,如何命名變數以及特定語言本身的約定俗成(像swift語言中是否該使用Classes還是Structs)。
編碼規範本身沒有孰對孰錯。在項目開始前,你可以設定自己的編碼風格,但是必須保證同組的人遵守相同的規範。編碼規範能夠保證代碼更加統一和更易於閱讀。
一些公司已經開源了Objective-C和Swift語言的編碼規範。
2.在寫代碼之前確定應用的架構
在寫代碼之前,確定應用架構是非常重要的。一個好的架構可以提升應用的可測試性,更加易於理解並且能降低維護成本。你可以使用傳統的MVC架構,或者使用更加流行的MVVM或VIPER架構,這裡提供了大量的資源來介紹這些架構。
3.設定應用的目錄結構
為了使數以百計的原始碼檔案至始至終儲存在相同的目錄中,最好是根據項目的架構制定目錄結構,例如,你可以使用以下的目錄結構:
首先,在Xcode的Project Navigator中工程名稱分組下面,以group的形式建立它們(小黃色的檔案夾),然後,通過開啟Xcode右邊的File Inspector,為每個建立的group連結到真實的項目路徑下對應的目錄,點擊File Inspector中小的灰色的檔案夾icon,在工程目錄下建立對應group名稱的子目錄。
這個看起來是件小的事情,卻可以使你的項目更加有條理且易於理解。
瞭解更多目錄結構可以參考以下資源:
4.項目依賴管理
你當然會在項目中使用第三方庫,在項目中,你可以有三種方式可以管理項目依賴。
CocoaPods是適用於Swift和Objective-C Cocoa項目的依賴管理庫,它有將近10000個開源庫,可以優雅地幫你管理項目的規模。它是最有效方式做依賴管理,就像Ruby中的Gems。
Youtube上有一個google開發人員建立的滑稽的視頻(地址,需FQ)來解釋為什麼必須在項目中使用CocoaPods。
你也可以使用Github Submodules管理你的項目依賴作為子庫,相比CocoaPods,Github Submodules的優點在於它是sub-repos- 這不僅意味著git和git GUIs能夠隱式識別他們,並且也可以獲得更多支援,同時意味著你的工程依賴能夠更加緊密的聯絡到他們的git倉庫,而Cocoapods則不能。
submodules的問題是:你的工程不擁有你依賴庫的原始碼,僅僅是擁有一個引用到submodule的倉庫。大多數情況你控制不了這些代碼倉庫。
Carthage被認為是往Cocoa應用中添加架構的最簡單的方法。Carthage使用xcodebuild編譯framework二進位,但是把整合的任務留給了使用者。CocoaPods的目的是對使用者簡單,但是Carthage對使用者來說是靈活的、不干涉的。
不幸的是,Carthage的最大的缺點是----只支援iOS8及以後版本。
這三個當中,我最常用並且我個人最喜歡的是CocoaPods,因為它設定超級簡單,並且提供了數以千計的第三方庫供你訪問。
5.為應用設定合適的Scheme
當你點擊了Run、Test、Profile、Analyze或者Archive 操作後,Schemes告訴Xcode什麼會發生。通常,每個操作對應一個target和一個編譯配置。你也可以傳遞啟動參數,比如應用啟動並執行語言(測試本地化很有用)或者debug時設定一些判斷的標識位。
建議Scheme的命名規則採用MyApp () [Environment]:
你也可以使用Target製作不同的發布、測試以及開發來編譯器,如以下描述:
6.設定合適的Certificates和Provisioning Profiles
在測試和發布應用過程中,這個是開發人員最頭疼且重要的步驟。認證對程式碼簽署來說是必須的,你可以在真機上運行應用程式。
有兩種類型的認證:
Provisioning Profiles 可能是系統中最容易引起混淆的部分了,如果你訪問蘋果開發人員網站,你會注意到你可以建立兩種類型的Provisioning Profiles(開發和發布)。Provisioning Profiles是“以這個認證的私密金鑰作為簽名的應用可以在這些裝置上正常運行: https://www.quora.com/What-are-the-differences-between-certificates-provisioning-profiles-and-identifiers
你可以閱讀更多相關資源:
7.設定應用持續整合和交付過程
建立一個持續整合和交付過程已成為關鍵,因為現在它可以協助您在開發早期發現bug和節省大量的開發人員的時間。
持續整合 (CI) 是一種開發實踐,要求開發人員一天將代碼同步到共用存放庫幾次。每次提交都會用自動指令碼進行驗證,可以使團隊儘早的發現問題。
很多工具可以幫你做iOS應用程式的持續整合,比如 Xcode Server、Jenkins和Travis CI。
持續傳遞 (CD) 是一個軟體工程的方式,可以使團隊在短周期內開發軟體,確保軟體可以在任何時間可靠地發布。它旨在更快、更頻繁地構建、測試和發布的軟體。
為什麼使用持續傳遞?
可以在準備應用提交、上傳以及發布應用上節省數天時間。
如果在同事休假期間,但你發現一個嚴重問題需要修複並發布怎麼辦?在發布更新版本時不需要依賴某一個人。
通過更頻繁和小版本的更新,提高軟體品質和反應時間。
雖然有大量的工具供持續傳遞,我個人最喜歡的是Fastlane。它非常容易安裝,並提供了一些強大的功能,可以使你整個的編譯和發布過程自動化。
如果你喜歡這篇文章,歡迎推薦,以便其他人也可以看到。
在寫一個iOS應用之前必須做的7件事(附相關資源)