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