IOS 開發(fā)文檔

一:設(shè)計模式

1:本項目采用mvvm設(shè)計模式,每個模塊下分為四個文件夾,分別為:ControllerViewViewModelModel

Controller:控制器文件夾 在此文件夾中只存放模塊相關(guān)控制器,控制器中只做UI初始化 刷新UI 響應(yīng)用戶事件 跳轉(zhuǎn)邏輯判斷等和業(yè)務(wù)無關(guān)操作,所有業(yè)務(wù)處理放到ViewModel中處理

View:自定義視圖文件夾 在此文件夾中存放該模塊相關(guān)的視圖,比如自定義的cell,定制的view等.

Model:數(shù)據(jù)模型? 如果一個view需要設(shè)置的屬性比較多,建議創(chuàng)建一個數(shù)據(jù)模型,并通過數(shù)據(jù)模型去給view賦值

ViewModel:業(yè)務(wù)邏輯管理? 這此處理模塊相關(guān)的業(yè)務(wù)邏輯,比如:網(wǎng)絡(luò)請求? 各種代理? 數(shù)據(jù)邏輯判斷(PS:輸入數(shù)據(jù)是否合法)等, 并通過block方式提供處理結(jié)果給Controller使用,這里不建議使用通知方式返回結(jié)果

二:項目框架整體結(jié)構(gòu),如下圖所示

項目結(jié)構(gòu)圖

1:Frameworks文件夾? 存放系統(tǒng)庫的虛擬文件夾,搭建框架的時候需要手動添加一個名稱為Frameworks的虛擬文件夾,這樣在Build Phases 中添加的系統(tǒng)庫會自動歸入此文件夾,不會直接在外部顯示以至于打亂目錄結(jié)構(gòu)

2:AppDlegate文件夾? 這個目錄下放的是AppDelegate.h(.m)文件,是整個應(yīng)用的入口文件,這里需要添加一些入口相關(guān)類以保持一個簡潔的AppDelegate,所以單獨(dú)建立了一個文件夾

3:Class文件夾? 項目業(yè)務(wù)主體,日常大部分開發(fā)代碼均在這里,里面包含項目所有的業(yè)務(wù)邏輯,下圖創(chuàng)建了三個大的分類業(yè)務(wù),每個業(yè)務(wù)下面的小業(yè)務(wù)再次分層次實(shí)現(xiàn)

Class業(yè)務(wù)模塊

4:Gategory文件夾 主要用來存放公共擴(kuò)展類,主要存儲一些對系統(tǒng)庫的擴(kuò)展

5:Libs文件夾 主要存放要用到的第三方類庫和項目中自己實(shí)現(xiàn)的公共類庫,可分文件夾分別存儲. 本項目也用到cocopods管理第三方庫,如果是不需要改動源碼直接使用的建議使用cocopods管理,如果需要改動源碼,強(qiáng)烈建議直接放入Libs文件夾中管理,以免更新pods代碼時把修改的代碼更新掉

6:Global文件夾? 存放全局的配置文件,包括pch文件,一些全局的宏定義文件等

7:Utils文件夾 項目相關(guān)輔助類,存放相關(guān)的數(shù)據(jù)請求,支付相關(guān)類,數(shù)據(jù)庫操作相關(guān)類等

8:General文件夾? 通用類,存儲項目移植過程中不需要更改就能直接使用的類

9:Resource文件夾? 資源文件夾,用來存放和項目有關(guān)的資源,比如圖片資源,文件資源等

10:Base文件夾? 基類,存儲項目中需要用到的基類,比如全局初始化的viewController父類, 彈窗父類, 展示表父類等

三:模塊結(jié)構(gòu)

1:每個大的模塊如果含有較多的小模塊建議多次分級(文件夾),以避免在一個模塊中放入過多的類代碼導(dǎo)致查找麻煩

2:模塊命名可以漢字也可以英文,但要做到見名知意,比如:

模塊層級結(jié)構(gòu)

四: 類結(jié)構(gòu)

1: 命名: 所有的命名都要做到見名知意, 使用英文,并且結(jié)尾要使用能表明該類或者屬性 類型的文字(PS: viewController label button array model? viewModel等)

1.1 采用大駝峰命名法,PS:PayHistoryViewController(表明是 支付歷史 并且是個 控制器)

1.2: 屬性命名: 采用小駝峰命名, 屬性和屬性之間換行已做區(qū)分, 實(shí)例變量命名要用_xxx方式

{// 數(shù)據(jù)源NSArray*_dataArray;// 存放選中cell的字典 NSDictionary*_selectedCellDic;}

如果是全局屬性并且在.h文件中,使用文檔注釋表明屬性的作用,(要注意空格 比如@property(nonatomic, strong)UILabel后面都有空格)如:

/**

* 剩余簽章次數(shù)

*/@property(nonatomic,strong)UILabel*timesTextLabel;/**

* 勾選

*/@property(nonatomic,strong)UIButton*checkBtn;/**

* 我已閱讀并同意

*/@property(nonatomic,strong)UILabel*readLabel;

如果在.m文件中,使用//注釋說明 表明屬性的作用,如:

// 剩余簽章次數(shù)@property(nonatomic,strong)UILabel*timesTextLabel;`// 勾選@property(nonatomic,strong)UIButton*checkBtn;`// 我已閱讀并同意@property(nonatomic,strong)UILabel*readLabel;

如果是局部變量,根據(jù)情況判斷是否要加注釋(只需要加//注釋);

1.3 方法命名 同樣的采用小駝峰命名,? 注釋方式和屬性相同,如有必要可以添加#pragma mark注釋, 如果有參數(shù),并采用多行注釋如有必要要在注釋中 表明 參數(shù)的含義. 當(dāng)參數(shù)較多時要換行以方便查看.如:

/**

*? 在window上展示

*? model? ? ? ? ? ? ? ? :數(shù)據(jù)模型

*? signUnitPrice? ? ? ? :單價

*? payTapBlock? ? ? ? ? :支付點(diǎn)擊事件

*? cancelTapBlock? ? ? ? :取消支付點(diǎn)擊事件

- (void)showWithProduct:(PayProductModel *)model

? ? ? ? ? signUnitPrice:(NSInteger)signUnitPrice

? ? ? ? ? ? payTapBlock:(void(^)(void))payTapBlock

? ? ? ? cancelTapBlock:(void(^)(void))cancelTapBlock;

方法聲命和實(shí)現(xiàn)時要注意空格,-(或者+)后面要有空格,{前面有空格,后面換行,方法和方法之間要換行,

2: 結(jié)構(gòu):

2.1 首先是 頭文件導(dǎo)入

2.2 全局屬性定義 相關(guān)宏定義 常量定義

2.3 聲命周期函數(shù)

2.4 用戶交互事件操作(各種點(diǎn)擊事件,刷新事件,界面跳轉(zhuǎn)事件)

2.5 子視圖初始化

五: 補(bǔ)充

5.1 簡寫補(bǔ)充 在定義屬性和方法時, 可以使用眾所周知的簡寫代替

5.2 事件補(bǔ)充 點(diǎn)擊事件使用xxxTapAction長按事件使用xxxLongPressAction

5.3 block補(bǔ)充? block聲命時 要使用copy, 命名時要使用大駝峰命名法,如:@property (nonatomic, copy) void (^PayTapAction)(void);

5.4 空格位置補(bǔ)充? 所有的操作符前后要加空格如:+-*/&&||<>=等

// 這里要主要空格for(inti=0;i<3;i++){}if(1){}else{// 這里else不要換行}while(1){}//? 這里break和 default不能忘記 switch(1){case1:break;default:break;}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市恕出,隨后出現(xiàn)的幾起案子铺纽,更是在濱河造成了極大的恐慌粟矿,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件次企,死亡現(xiàn)場離奇詭異虽画,居然都是意外死亡贩据,警方通過查閱死者的電腦和手機(jī)饱亮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來葱绒,“玉大人地淀,你說我怎么就攤上這事骚秦∽鞴浚” “怎么了胞得?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵跃巡,是天一觀的道長。 經(jīng)常有香客問我兔朦,道長沽甥,這世上最難降的妖魔是什么摆舟? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任骗炉,我火速辦了婚禮痕鳍,結(jié)果婚禮上熊响,老公的妹妹穿的比我還像新娘诗赌。我一直安慰自己铭若,他們只是感情好叼屠,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布嫂侍。 她就那樣靜靜地躺著菲盾,像睡著了一般懒鉴。 火紅的嫁衣襯著肌膚如雪疗我。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天,我揣著相機(jī)與錄音鞭缭,去河邊找鬼。 笑死沦童,一個胖子當(dāng)著我的面吹牛偷遗,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播泵喘,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼霹陡,長吁一口氣:“原來是場噩夢啊……” “哼攒霹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起浆洗,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤催束,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后伏社,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抠刺,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年摘昌,在試婚紗的時候發(fā)現(xiàn)自己被綠了速妖。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡聪黎,死狀恐怖罕容,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情稿饰,我是刑警寧澤锦秒,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站喉镰,受9級特大地震影響旅择,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜侣姆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一生真、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧捺宗,春花似錦汇歹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至弯囊,卻和暖如春痰哨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背匾嘱。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工斤斧, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人霎烙。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓撬讽,卻偏偏與公主長得像蕊连,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子游昼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評論 2 348

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

  • 一:設(shè)計模式 1:本項目采用mvvm設(shè)計模式,每個模塊下分為四個文件夾,分別為:Controller View ...
    漠醉閱讀 4,178評論 0 3
  • 一. 代碼規(guī)范 為了方便項目維護(hù)及交接甘苍,特制定以下代碼書寫規(guī)范,如有不妥之處烘豌,歡迎批評指正载庭,有什么建議 QQ: 8...
    Balopy閱讀 6,609評論 4 7
  • 命名 命名統(tǒng)一使用駝峰命名法;只采納有廣為人知含義的縮寫廊佩,比如info囚聚、msg、UI标锄、HTTP這類顽铸。自造的縮寫不被...
    伶俐ll閱讀 728評論 0 0
  • 需求 一個公司隨著時間的推移會慢慢的成長起來,這也就意味著公司的隊伍也會不斷的壯大料皇。在壯大的同時需要保證團(tuán)隊開發(fā)的...
    SuperDanny閱讀 1,147評論 0 5
  • 關(guān)于命名1> 統(tǒng)一要求? 含義清楚谓松,盡量做到不需要注釋也能了解其作用,若做不到瓶蝴,就加注釋? 使用全稱,不適...
    歐巴剛弄死他閱讀 506評論 0 0