關(guān)于iOS項目目錄規(guī)范化思考

黑五福利鎮(zhèn)樓

引子

不知不覺代碼寫了四年多了

接觸過大大小小的項目30+

見過形形色色的結(jié)構(gòu)目錄

無論是接手代碼還是自己的項目改著改著

總覺得沒有讓本強迫癥患者大呼舒爽的Feel

所以結(jié)合自己手頭的項目重新梳理了一遍

本著文件路徑深不過四層的一個中心

通用工具類和項目源碼類區(qū)分的兩個基本點

整體結(jié)構(gòu)以“xxProject”演示 如下面的思維導圖所示

New xxProject.png

New xxProject(演示項目)

Common Tools(通用工具庫,可以一鍵移植到別的項目使用)

Base(通用基類)

  • BaseLabel(常用標簽,可以封裝實例方法,一鍵配置layerBorder,默認字體等)
  • BaseButton(常用按鈕,可以封裝實例方法,包含倒計時功能的按鈕,一鍵配置cornerRadius等)
  • BaseNavController(導航控制器,比較常用,所以放到基類里統(tǒng)一處理,Tabbar基本只用一次就算了)
  • BaseViewController(所有ViewController的基類,可以放一些公用方法,設(shè)置BackgroundColor這些)
  • BaseListController(重寫初始化方法,自帶一個TableView,實現(xiàn)一些代理)
  • BaseScrollController(重寫初始化方法,自帶一個ScrollView,并放入一個ConntentView撐開)
  • BaseWebController(自帶UIWebView/WKWebView,并且封裝進度條ProgressView之類的)

Category(分類)

  • Foundation/NSCategory(對于NS方法的補充,例如NSString/NSDate/NSDictionary常見分類)
  • UIKit/UICategory(對于UI常見方法的補充,例如UIImageView/UILayoutGuide等)

Untils(輔助)

  • Device Info(因為經(jīng)常判斷手機設(shè)別型號,存放AppVersion,以及NSBundle里其余的信息)
  • Debug System (每個項目都少不了自定義Log打印系統(tǒng),還有一些輔助調(diào)試的方法,防護框架等通用工具)

Project Setting(針對單個項目)

Prefix header (全局引用頭文件.pch)

Macros(預(yù)編譯宏)

  • Usual Color(常用的顏色,用宏比較方便)
  • Usual Font(常用的字體,用宏一鍵調(diào)用)

Constant(常量)

  • Notify(通知名,整個APP所有的通知統(tǒng)一管理)
  • Tips/Errors(方便文案修改,放一起統(tǒng)一管理)
  • Keys(NSUserDefault的Keys/注冊三方庫的AppIds)

Manager(管理工具)

  • Net Manger(網(wǎng)絡(luò)請求)
    • Host.h(涉及到開發(fā)環(huán)境/預(yù)發(fā)布環(huán)境/生產(chǎn)環(huán)境多個服務(wù)器主機)
    • Api.h(接口羅列,可能涉及到接口版本號)
    • Session.h(具體的POST/GET請求工具,例如AFN的封裝)
  • Track Manger(數(shù)據(jù)埋點工具,針對項目不同,所以沒有放在通用里)
  • Language Manager(多語言環(huán)境切換管理工具,國家地區(qū)切換同理)

Handler(處理工具)

  • Show Handler(這個目錄就是為了方便App空數(shù)據(jù)時展示,還有服務(wù)器數(shù)據(jù)轉(zhuǎn)換成展示所需樣式)
    • Default Image(展位圖)
    • Default Attributes(固定風格富文本)
  • Calculator Handler(將服務(wù)器返回的元數(shù)據(jù)做二次處理方便展示)

Cache(緩存)

  • Local ShareInstance(內(nèi)存里的單例)
    • Singleton
  • Local Storage(硬盤里的持續(xù)化存儲)
    • UserDefault/Coredata/FMDB

Project Module(項目組件化)

Pubilc(公用浮層)

  • Toast
  • HUD
  • Alert
  • Combine(組合控件,有的UI喜歡兩個Label一個UImage組合一起反復(fù)用這樣)

BaseModule

  • BaseModel
    • xxResponseModel(數(shù)據(jù)結(jié)構(gòu)模型,無論MVC還是MVVM必備)
  • BaseViewModel
    • xxBaseCommond(以MVVM為例,邏輯處理的地方,鏈接視圖View和數(shù)據(jù)Model)
  • BaseViewController
    • xxController(View的集合,只處理視圖布局,與ViewModel雙向綁定)
  • BaseView
    • xxTableviewCell
    • xxCollectionViewCell
    • xxTextField
    • xxTextView

HomePage

UserPage

ActivityPage

3rd Library(三方庫)

CocoaPods

Carthage

Others Code

Resources(各種資源文件)

Asset(資源集)

  • AppIcon
  • LaunchImage

.gif(圖片文件)

.ttf(字體文件)

.html(本地Html你懂的)

.entitlements(推送等環(huán)境配置)

.strings(多語言環(huán)境源文件)

  • Base
  • English
  • Arabic
  • Russian

.plist(同一個項目會存在多個info.plist,對比著好管理)

  • targets/info.plist
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容