7件開發(fā)iOS程序之前必須要做的事


作者:Nlkant and
翻譯:Mr_龍0615
原文:7 Thins you must absolutely do before writing an iOS app

我已經開發(fā)高質量的iOS程序產品已經兩年了憾筏。我知道絕大多數開發(fā)者有一種傾向整慎,就是直接進入程序的核心邏輯的編碼稠通,這就是樂趣的所在。按流程進行很無聊俄精。

我最近學到的是,如果你在前期花一些時間正確設置你的項目榕堰,你將會在以后節(jié)省大把時間竖慧。如果你是個人開發(fā)者,你可能還沒有意識到我以下提到的步驟的重要性逆屡。大多數好的應用程序都是團隊開發(fā)的圾旨,而以下步驟絕對會減少你和團隊的挫折(障礙)并提高應用程序的質量。

1.為你的項目建立編碼風格規(guī)范

編碼風格規(guī)范是指在使用某種特定編程語言前參考的風格和約定魏蔗。它包括諸如應該用tab鍵還是空格砍的,如何給變量命名,或者一種語言的一些慣例(如在Swift中應該使用類還結構體) 編碼風格沒有對錯莺治。你可以在開始你的項目之前決定你自己的風格廓鞠,但是要記住整個團隊都需要遵守這個規(guī)范帚稠。這些規(guī)范將幫你們使用你們的代碼更統(tǒng)一并方便閱讀。

一些公司已經開源了他們關于Swift和objective-C的編碼規(guī)范

raywenderlich/swift-style-guide
github/swift-style-guide
NYTimes/objective-c-style-guide

2.開始編碼前確定程序的結構

在開始寫代碼之前確定程序的結構是非常重要的床佳。良好的結構會使得你的程序經得起考驗滋早,容易理解,降低維護成本夕土。你可以遵循傳統(tǒng)的MVC(Model-View-Controller)結構馆衔,或者嘗試更優(yōu)秀的MVVM或VIPER結構。網絡上現(xiàn)在有超多的資料介紹這些結構怨绣。

iOS Architecture Patterns --中文版

Issue 13:Architecture-objc.io

Modern application architectures (Reactive programming, MVVM beyond)

3.規(guī)范程序目錄結構

為了保證你大量的源代碼在同一個目錄中存儲角溃,根據你的結構決定你可以設定對應的目錄結構。例如篮撑,你可以這樣:

|-- Models
|-- Views
|-- Controllers(or ViewModels, if your architecture is MVV)
|-- Stores
|-- Helpers

首先减细,在Xcode的項目導航欄創(chuàng)建以上分組(小的黃色的"文件夾")。然后赢笨,把每組與項目路徑中實際的目錄對應未蝌,通過右側的文件檢查器,點擊小的灰色的文件夾圖標創(chuàng)建與你工程目錄中名字相同的子文件夾茧妒。

這好像是個次要的事萧吠,但是絕對會讓你的應用程序更加結構化而且更容易理解。

想了解更多桐筏,查看這個資源纸型。

futurice/ios-good-practices

4.依賴庫管理

在你程序中,你肯定會用到某些第三方庫梅忌。以下是三種重要的管理項目中依賴庫的方式狰腌。

CocoaPods

CocoaPods.org

CocoaPods是針對Swift和Objective-C語言cocoa項目的依賴庫管理工具。它大概有上萬個庫可以幫助你使你的項目更優(yōu)秀牧氮。它是管理依賴庫最有效的方式琼腔,在過程上和Ruby Gems相似。

YouTube視頻

Github Submodules

你也可以使用git子模塊來組織你程序中的依賴庫踱葛。相比于CocoaPods丹莲,子模塊的優(yōu)勢在于子模塊就是子倉庫——不僅意味著git和git的GUI都可以隱式識別它們,和越來越多的支持使它們更方便使用尸诽,也意味著你的項目依賴的庫與它們的倉庫圾笨,保持著關聯(lián),CocoaPods并不逊谋,它保留在你的項目中擂达。

使用git子模塊的問題在于:你的項目并不包含你依賴的源代碼,它只是引用了子模塊的倉庫。而且大多數時候你甚至不能控制那個倉庫板鬓。

[注]倉庫指的程序托管的代碼庫悲敷。

Carthage

Carthage/Carthage

Carthage的初衷是成為向Cocoa程序添加框架最簡單的方式。Carthage使用xcodebuild創(chuàng)建框架俭令,但是把整合的責任交給了用戶后德。CocoaPods的使用方法更簡單,而Carthage的方式則更靈活抄腔。

不幸的是瓢湃,Carthage有一個大的缺點——就是只支持iOS8以后的版本

以上就是最常用的三種管理依賴庫的方式,而我個人最喜歡的是CocoaPods赫蛇,因為它設置超級方便而且可以獲取到成千上萬的第三方庫绵患。

5.為你的程序設置恰當的Schemes

Schemes告訴Xcode當你點擊"執(zhí)行"、"設置"悟耘、"配置"落蝙、"分析"或者"打包"的時候,應該干什么暂幼》だ眨基本上,Schemes標明了這些操作對應的目標和編譯配置旺嬉。你也可以通過傳入啟動參數管行,如程序應該運行的語言(手動測試本地化!)或者設置一些調度診斷標志邪媳。

以下是MyApp(<Language>)[Environment]的Schemes命名規(guī)范:

MyApp (Enligsh) [Development]

MyApp (Germen) [Development]

MyApp [Testing]

MyApp [Staging]

MyApp [App Store]

你可以用不同的目標(Targets)像下面描述的那樣捐顷,為你的程序生成不同的產品(Production),測試(Test)和開發(fā)(Development)版本。

How to Use Xcode Targets to Manage Development and Production Builds

6.為你的程序設置恰當的證書及配置文件

這一步是測試和發(fā)布iOS程序最痛苦也是最重要的步驟之一悲酷。代碼簽名需要證書套菜,這樣你的程序才能在真機上運行亲善。

證書有兩種:

  • 開發(fā)證書:每個開發(fā)者所在團隊都有他們自己的開發(fā)證書设易,它是基于請求生成的。Xcode可以為你做蛹头,但是最好不要點擊 神奇的"修復"按鈕顿肺,并且不要去理解到底實際發(fā)生了什么。這種證書在部署開發(fā)版程序到設備上的時候才需要渣蜗。
  • 生產證書:生產證書可以有多個屠尊,但是最好是保證一個公司只有一個,然后通過內部渠道共享它的關聯(lián)的密鑰耕拷。在上傳到App Store或者你的公司內部的"企業(yè)app store"的時候需要這種證書讼昆。

配置文件——可能是這個系統(tǒng)中最令人疑惑的文件了。一個配置文件表示應用程序對于哪些設備是簽名正確的骚烧。如果你訪問開發(fā)者網站首頁浸赫,你會注意到你可以創(chuàng)建兩種(也叫開發(fā)配置文件生產配置文件)配置文件闰围。配置文件作用是使用這個標識(Identifier)的應用程序是用證書(Certificate)的私有密鑰(Key)簽名的,可以在這類設備上運行既峡。

參考What are the differences between certificates provisioning profiles and identifiers

你可以在下面的鏈接中了解更多:

Maintaining Your Signing Identifiers and Certificates

What is a Provisioning Profile> (Pt. 2) by Jay Graves of Double Encore

7.設置持續(xù)集成和交付進度

設置持續(xù)集成和交付進度在今天看來有點挑剔了羡榴,但是它可以幫助你在開發(fā)周期中早點發(fā)現(xiàn)問題(bugs)并且節(jié)省大量開發(fā)時間。

持續(xù)集成(CI)是一種開發(fā)實踐需要開發(fā)者們每天集成代碼到共享庫幾次运敢。每次先檢查校仑,然后通過自動編譯驗證,可以使團隊早點發(fā)現(xiàn)問題传惠。

現(xiàn)在有很多工具可以幫助你持續(xù)集成iOS程序可以使用迄沫,像Xcode Server, Jenkins 和 Travis CI。

About Continuous Integration in Xcode

Travis CI - Test and Deploy Your Code with Confidence

iOS CI with Jenkins | Pivotal P.O.V

持續(xù)交付(Continuous Delivery(CD))軟件工程方法涉枫,這種方法要求開發(fā)團隊短期編譯生成軟件邢滑,用來確保軟件可以隨時發(fā)布的可靠性。1愿汰。它的目標是在于使軟件編譯困后、測試和發(fā)布更快和更頻繁。

為什么要使用持續(xù)交付衬廷?

  1. 節(jié)省準備提交摇予、上傳截圖和發(fā)布程序的幾天時間。

  2. 同事在度假而一個緊急問題修復(bugfix)需要發(fā)布吗跋?不要指望一個人發(fā)布升級侧戴。

  3. 更頻繁和更小體積的發(fā)布可以提升軟件質量和反應時間。

盡管有許多持續(xù)交付的工具可以使用跌宛,但是我個人最喜歡的還是Fastlane. 它的設置真的是超級方便酗宋,而且功能非常強大。這可以實現(xiàn)整個編譯和發(fā)布流程自動化疆拘。

fastlane - iOS and Android Automation for Continuous Delivery

如果你喜歡這篇文章蜕猫,建議你分享出去,可以讓其他人也能看到并喜歡它哎迄。訂閱我的網站獲取更多文章回右。


關鍵字: iOS 持續(xù)集成 Swift


寫在后面:

由于譯者的翻譯水平有限,如有不足之處漱挚,希望大家指出翔烁。

關于譯者:

微博:Mr_龍0615

郵箱:anar0615@sina.com

GitHub:Anar

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市旨涝,隨后出現(xiàn)的幾起案子蹬屹,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件慨默,死亡現(xiàn)場離奇詭異秃踩,居然都是意外死亡,警方通過查閱死者的電腦和手機业筏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門憔杨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蒜胖,你說我怎么就攤上這事消别。” “怎么了台谢?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵寻狂,是天一觀的道長。 經常有香客問我朋沮,道長蛇券,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任樊拓,我火速辦了婚禮纠亚,結果婚禮上,老公的妹妹穿的比我還像新娘筋夏。我一直安慰自己蒂胞,他們只是感情好,可當我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布条篷。 她就那樣靜靜地躺著骗随,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赴叹。 梳的紋絲不亂的頭發(fā)上鸿染,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天,我揣著相機與錄音乞巧,去河邊找鬼涨椒。 笑死,一個胖子當著我的面吹牛摊欠,可吹牛的內容都是我干的丢烘。 我是一名探鬼主播柱宦,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼些椒,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了掸刊?” 一聲冷哼從身側響起免糕,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后石窑,有當地人在樹林里發(fā)現(xiàn)了一具尸體牌芋,經...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年松逊,在試婚紗的時候發(fā)現(xiàn)自己被綠了躺屁。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡经宏,死狀恐怖犀暑,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情烁兰,我是刑警寧澤耐亏,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站沪斟,受9級特大地震影響广辰,放射性物質發(fā)生泄漏。R本人自食惡果不足惜主之,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一择吊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧槽奕,春花似錦干发、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至琼讽,卻和暖如春必峰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背钻蹬。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工吼蚁, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人问欠。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓肝匆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親顺献。 傳聞我的和親對象是個殘疾皇子旗国,可洞房花燭夜當晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內容

  • 兩人在一起,彼此都會順從對方注整,就算沒有共同的愛好也會陪伴彼此能曾,一起逛街度硝,一起散步,一起看日出日落寿冕,陪伴高興蕊程,陪伴哀...
    皮影戲ken閱讀 295評論 0 0
  • 今天淅淅瀝瀝下起了小雨藻茂,傍晚雨突然大了起來,一陣過后雨停了玫恳,雨把校園清洗的更加美麗了捌治。 雨,是大自然...
    徐雨恒閱讀 183評論 0 0
  • 咖啡苦不苦 業(yè)務能力測試結束后,大家陸續(xù)到休息室拿自己的隨身物品臂港,X省省委黨史研究室的...
    咖啡苦不苦_SD閱讀 639評論 0 0