最近公司換了個(gè)產(chǎn)品經(jīng)理,該公司以產(chǎn)品線為主,無項(xiàng)目經(jīng)理肢础,無疑便是產(chǎn)品當(dāng)?shù)阑顾ǎ^新官上任三把火,推翻之前的迭代了3次的項(xiàng)目传轰,故辛辛苦苦大半年剩盒,一夜又回到了解放前,用粗俗的話來說就是在老板面前會(huì)拍馬屁慨蛙,而且還能拍的一套一套的辽聊,馬屁成精的他成為boss身邊的紅人,那嘚瑟的呦 F谄丁8摇!誰懟了他通砍,那就不得了凤覆!實(shí)在是無力再吐槽了牧愁。
而作為程序猿的我們,代碼質(zhì)量以及效率才是我們?cè)撟非蟮牧模欢嗾f了刑峡,上demo才是硬道理E骸O跖 椿疗!
<一>項(xiàng)目搭建
首先先看
AppDelegate
放的是AppDelegate.h(.m)文件,是整個(gè)應(yīng)用的入口文件膜蠢,所以單獨(dú)拿出來堪藐。
Base
工程主體類, 日常大部分開發(fā)代碼均在這里,又細(xì)分了好多次級(jí)目錄。
Base( 基類 (整個(gè)框架的基類))包括:
- ControllerView
- BaseNavViewController(通過
appearance
統(tǒng)一設(shè)置nav的相關(guān)設(shè)置) - BaseTabBarViewController(設(shè)置TabBarVC)
- BaseUIViewController(主要分三塊需子類重寫:setupNav 狡蝶,loadDataFromNetwork,setupUI)
- BaseWebViewController(加載網(wǎng)頁)
- BaseTableViewController(設(shè)置tableView和刷新)
- BaseNavViewController(通過
- Model公共BaseModel (將第三方的進(jìn)行封裝庶橱,子類繼承于BaseModel)
- Views公共View (封裝的一些常用的View)
Classes
以TabBar名字命名(一般是大概在3贮勃,4贪惹,5個(gè)左右,主要看產(chǎn)品需求)寂嘉,這里只拿其中一例作為說明奏瞬。
例如其中首頁部分:
補(bǔ)充
作為一個(gè)程序猿不管是剛?cè)腴T也好,是大神也罷泉孩,代碼規(guī)范是一定有的硼端,并讓這種規(guī)范成為你的習(xí)慣,這樣有利于其他同事查看寓搬,也方便自己看珍昨,別自己下次看的時(shí)候,自己都看不懂了,那就??了镣典。
Public
主要放一些通用的東西兔毙,包括公用的cell和控制器、數(shù)據(jù)庫等等
Expand
- Category(UIKit和UI)
- Macros(所有的接口(ConstUrl)兄春、枚舉以及通知名稱(Const)澎剥、配置友盟賬號(hào)、主題顏色赶舆、打印哑姚、環(huán)境(開發(fā)、測試芜茵、預(yù)發(fā)布叙量、正式) Macros)
- Network(網(wǎng)絡(luò)請(qǐng)求包括配置公共參數(shù))
- Tools(MD5加密等等)
SDKFile
第三方的類庫/SDK(Wechatpay/Alipay/UMSocial等等)
Vender
第三方的類(Reachability/FLAnimatedImage/SDCycleScrollView等等)
Resourse
主要包括(Image和plist文件)
Supporting Files
放XX.pch文件
補(bǔ)充
之所以把所有的接口寫都在ConstUrl中,是因?yàn)橹俺赃^這么一次虧九串,后臺(tái)之前很亂宛乃,之前都是以.方式進(jìn)行拼接,后面改成以/的方式進(jìn)行拼接蒸辆。
例如
之前
doindex.getIndexlbt
之后
index/getIndexlbt
<二>代碼規(guī)范
命名規(guī)范(駝峰式)
Url統(tǒng)一命名規(guī)范
ConstUrl.h
UIKIT_EXTERN NSString * const kGetActivityInfoUrl;
ConstUrl.m
NSString * const kGetActivityInfoUrl = @"activity/getActivityInfo";
- 枚舉和通知統(tǒng)一在Const中寫
Const.h
/********************通知**************/
//登陸成功
UIKIT_EXTERN NSString * const kLoginSuccessNotification;
/*----------------------------------枚舉----------------------------------*/
//國家 0中國 1美國 2泰國 3越南
typedef NS_ENUM(NSUInteger,LYCountryType){
LYCountryTypeChina = 0, //中國
LYCountryTypeUSA = 1, //美國
LYCountryTypeThailand = 2, //泰國
LYCountryTypeVietnam = 3, //越南
};
Const.m
/********************通知**************/
//登陸成功
NSString * const kLoginSuccessNotification = @"kLoginSuccessNotification";