02正式著手項(xiàng)目開(kāi)發(fā)-工程目錄的組織

寫(xiě)在前面

  • 工作環(huán)境

我加入的是一家創(chuàng)業(yè)公司(91分紅),我是唯一的iOS属铁。那時(shí)我剛剛大學(xué)畢業(yè)眠寿,我所具備的iOS技能可能還不如培訓(xùn)機(jī)構(gòu)出來(lái)的多(至少各種第三方庫(kù)我都不會(huì)用),但是公司給了我很大的空間焦蘑,讓我自由成長(zhǎng)盯拱,這使得我的學(xué)習(xí)能力得到了充分的發(fā)揮。</br>

  • 我是如何學(xué)習(xí)新知識(shí)點(diǎn)的

對(duì)于一個(gè)新的東西例嘱,我一般會(huì)先google一下狡逢,看5-10篇blog,挑一個(gè)寫(xiě)得比較好的照著做一遍蝶防,這樣在兩三個(gè)小時(shí)內(nèi)甚侣,我能有一個(gè)感性的認(rèn)識(shí)。接下來(lái)我會(huì)去扒一下頭文件间学,大致看一下這東西都能怎么用殷费。然后就是上蘋(píng)果開(kāi)發(fā)者中心下載相關(guān)的文檔,讀讀讀低葫。這樣第一天我能大致把項(xiàng)目中的功能搭起來(lái)详羡,第二天做細(xì)節(jié)填充和優(yōu)化。接下來(lái)如果有時(shí)間我還會(huì)去簡(jiǎn)書(shū)之類(lèi)的論壇挖一些優(yōu)化帖嘿悬,參照著優(yōu)化這個(gè)部分实柠。</br>

  • 入職時(shí)項(xiàng)目開(kāi)發(fā)的進(jìn)度

入職時(shí)項(xiàng)目已經(jīng)開(kāi)始開(kāi)發(fā)了,安卓端善涨、后臺(tái)窒盐、前端都已經(jīng)工作了兩周。我大致了解了一下這個(gè)創(chuàng)業(yè)項(xiàng)目是干什么钢拧,然后拿到了之前的iOS搭起來(lái)的框架蟹漓,發(fā)現(xiàn)很亂。Boss表示可以重新來(lái)源内,我果斷重建了項(xiàng)目葡粒。那么問(wèn)題就來(lái)了,怎么組織項(xiàng)目的工程結(jié)構(gòu)(目錄結(jié)構(gòu))呢膜钓?(至于需求分析嗽交、UE設(shè)計(jì),根本都沒(méi)有時(shí)間管颂斜,后面的章節(jié)會(huì)用另一個(gè)項(xiàng)目談一談這兩點(diǎn))</br>

  • 正式著手開(kāi)發(fā)之前夫壁,我的工程目錄結(jié)構(gòu)

關(guān)于這個(gè)問(wèn)題,可能初學(xué)者根本都沒(méi)有考慮過(guò)焚鲜。當(dāng)時(shí)我自己學(xué)習(xí)iOS開(kāi)發(fā)的時(shí)候掌唾,工程目錄簡(jiǎn)直就是一坨翔放前。

  • 我是如何想到“目錄結(jié)構(gòu)”這個(gè)問(wèn)題的

因?yàn)榈谝惶炷玫绞值墓こ檀a有好多文件啊——網(wǎng)絡(luò)請(qǐng)求、數(shù)據(jù)庫(kù)糯彬、各種第三方凭语,亂七八糟的,看得我心煩撩扒。根據(jù)喬幫主的極簡(jiǎn)主義和我的各種強(qiáng)迫癥似扔,我必須讓工程目錄優(yōu)雅起來(lái)。</br>

如何組織項(xiàng)目的工程目錄

這個(gè)沒(méi)有通用的模版搓谆,我查閱了其他工程師分享的目錄結(jié)構(gòu)炒辉,發(fā)現(xiàn)與我的并不完全一致,但是有非常多相似的地方泉手,算是一種工程師之間的約定吧黔寇。我總結(jié)歸納如下:</br>

可以從兩個(gè)角度來(lái)編排目錄結(jié)構(gòu)</br>
  • 從功能點(diǎn)的角度</br>
    優(yōu)點(diǎn):可以降低工程目錄中各模塊的耦合程度</br>
    缺點(diǎn):可能會(huì)使工程目錄</br>

  • 從APP使用流程的角度(聯(lián)系人列表 -> 聯(lián)系人詳情 -> 編輯聯(lián)系人信息)</br>
    優(yōu)點(diǎn):可以根據(jù)功能點(diǎn)快速定位代碼,工程目錄有層次感</br>
    缺點(diǎn):各功能模塊可能使用了相同的東西斩萌,這可能會(huì)增加目錄之間的耦合程度(應(yīng)用多處用到)</br>

目錄結(jié)構(gòu)通常會(huì)結(jié)合“功能點(diǎn)”和“APP使用流程”來(lái)編排缝裤。

其他人是如何搭建工程目錄的

iOS項(xiàng)目的目錄結(jié)構(gòu)和開(kāi)發(fā)流程</br>
知乎上有關(guān)于項(xiàng)目目錄結(jié)構(gòu)的討論</br>

我是如何搭建工程目錄的

-關(guān)于共識(shí)</br>

  1. 每個(gè)項(xiàng)目都會(huì)有網(wǎng)絡(luò)層和數(shù)據(jù)庫(kù)層,所以會(huì)產(chǎn)生以下目錄

    • Tools
      • Network
      • Database
  2. 每個(gè)項(xiàng)目都可能用到第三方庫(kù)(SDWebImage AFNetwrok等)颊郎,用Cocoapods管理第三方庫(kù)是最佳選擇憋飞,可以隨時(shí)將第三方庫(kù)更新到最新版本
    小白級(jí)的CocoaPods安裝使用教程

    • SupportingFiles
      • ThirdPartyFrameWork
        • AFNetwor
        • SDWebImage
  3. 每個(gè)項(xiàng)目都可能會(huì)使用第三方接口(微信 微博 支付寶等),所以會(huì)產(chǎn)生以下目錄

    • SupportingFiles
      • ThirdPartInterface
        • wechat
        • weibo
        • alipay
        • gaode
        • ...
  4. 每個(gè)項(xiàng)目都可能用到圖片姆吭、音頻榛做、視頻資源,所以會(huì)產(chǎn)生以下目錄

    • Resources
      • Image
      • Video
      • Audio
  5. 每個(gè)項(xiàng)目都會(huì)用到系統(tǒng)庫(kù)内狸,所以會(huì)產(chǎn)生以下目錄

    • SupportingFiles
      • SystemFramework

-個(gè)人偏好</br>

  1. 我會(huì)把AppDelegate和整個(gè)APP的根視圖控制器提出來(lái)检眯,因?yàn)檫@是整個(gè)應(yīng)用的入口

    • Root
      • AppDelegate.h / .m
      • RootViewController.h / .m
      • (main.m)
  2. 有些工程師喜歡把宏定義文件放在MICRO目錄里,我偏好于把全局的宏定義文件放在Root中昆淡,其余各部分的宏定義文件放在各個(gè)模塊對(duì)應(yīng)的目錄中轰传,方便管理

    • Root
      • Micro
        • MICRO_MAIN
        • ...

-剩下的具體的實(shí)現(xiàn)文件(MVC)

我個(gè)人偏好于按照APP使用流程編排目錄(細(xì)分到每一個(gè)功能點(diǎn)),譬如說(shuō)“微信”這個(gè)APP瘪撇,我可能會(huì)產(chǎn)生如下目錄</br>

* Chats
    * RecentChatsList
        * Micro
        * Model
        * View
        * Controller
    * ...
    * GroupChat
* Contacts
    * ContactList
    * ...
    * RecommendedFriends
* Discover
    * Moments
    * ...
    * Games
* Me 
    * Profile
    * ...
    * Settings

之前提到了如果按照使用流程編排目錄,可能會(huì)增加目錄的耦合度港庄,所以對(duì)于應(yīng)用多處使用到的功能模塊倔既,我會(huì)把他們抽出來(lái),放到一個(gè)Public目錄里鹏氧,譬如說(shuō)對(duì)于“微信”渤涌,項(xiàng)目中我可能會(huì)產(chǎn)生以下目錄
* PublicModule
    * ScanQRCode
    * AddContacts
    *...

當(dāng)然,根據(jù)項(xiàng)目的具體情況可能還會(huì)產(chǎn)生其他一級(jí)目錄把还,譬如說(shuō)比較復(fù)雜的應(yīng)用會(huì)使用到相當(dāng)多的自定義控件</br>
* Custom
    * Extension
    * UIKit
    * ...
總結(jié)

“如何組織工程目錄”并沒(méi)有統(tǒng)一的說(shuō)法实蓬,但是會(huì)有一些共識(shí)茸俭。譬如目錄名要表明這個(gè)目錄下的文件的作用(文件名也是一樣)、數(shù)據(jù)庫(kù)層和網(wǎng)絡(luò)層要抽出來(lái)單獨(dú)建立一個(gè)目錄安皱。根據(jù)工程師的風(fēng)格最終會(huì)產(chǎn)生不同風(fēng)格的目錄結(jié)構(gòu)调鬓,但是我認(rèn)為編排目錄是以管理為目的的吧,所以盡可能寫(xiě)得清楚一點(diǎn)酌伊。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末腾窝,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子居砖,更是在濱河造成了極大的恐慌虹脯,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件奏候,死亡現(xiàn)場(chǎng)離奇詭異循集,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)蔗草,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)咒彤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人蕉世,你說(shuō)我怎么就攤上這事蔼紧。” “怎么了狠轻?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵奸例,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我向楼,道長(zhǎng)查吊,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任湖蜕,我火速辦了婚禮逻卖,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘昭抒。我一直安慰自己评也,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布灭返。 她就那樣靜靜地躺著盗迟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪熙含。 梳的紋絲不亂的頭發(fā)上罚缕,一...
    開(kāi)封第一講書(shū)人閱讀 50,096評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音怎静,去河邊找鬼邮弹。 笑死黔衡,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的腌乡。 我是一名探鬼主播盟劫,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼导饲!你這毒婦竟也來(lái)了捞高?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤渣锦,失蹤者是張志新(化名)和其女友劉穎硝岗,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體袋毙,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡型檀,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了听盖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片胀溺。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖皆看,靈堂內(nèi)的尸體忽然破棺而出仓坞,到底是詐尸還是另有隱情,我是刑警寧澤腰吟,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布无埃,位于F島的核電站,受9級(jí)特大地震影響毛雇,放射性物質(zhì)發(fā)生泄漏嫉称。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一灵疮、第九天 我趴在偏房一處隱蔽的房頂上張望织阅。 院中可真熱鬧,春花似錦震捣、人聲如沸荔棉。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)江耀。三九已至,卻和暖如春诉植,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背昵观。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工晾腔, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留舌稀,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓灼擂,卻偏偏與公主長(zhǎng)得像壁查,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子剔应,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,871評(píng)論 25 707
  • 我決定要擁抱美好的生活了睡腿! 渾渾噩噩了那么久,終于走出了這一步峻贮。 這是我剛剛3分鐘前在馬桶上思考出來(lái)的人生重大決定...
    低騷音閱讀 328評(píng)論 0 0
  • 您找到了您的幸福嗎席怪? 露姬是什么時(shí)候開(kāi)始成為孔岱咖啡館的常客的纤控?書(shū)中沒(méi)有很清楚地說(shuō)明挂捻,只是通過(guò)第一位敘述者——一名...
    書(shū)山草閱讀 683評(píng)論 0 1
  • 想想真可怕,去年的事好像出現(xiàn)在上個(gè)世紀(jì)船万,前年更是遠(yuǎn)古時(shí)代刻撒,還沒(méi)發(fā)生的事情很快就會(huì)成為遙遠(yuǎn)的記憶,從來(lái)不覺(jué)得好玩的故...
    氧氣是個(gè)地鐵閱讀 3,556評(píng)論 1 13
  • 一醋火、慵懶的周六 今天就敘寫(xiě)些閑話(huà)吧。 沒(méi)有五點(diǎn)起床狮荔,也沒(méi)有五點(diǎn)發(fā)文胎撇,因?yàn)槲蚁胨瘋€(gè)懶覺(jué),一覺(jué)睡到了七點(diǎn)殖氏。今天想徹底的...
    一人獨(dú)占一江水閱讀 219評(píng)論 1 1