前言
遵守規(guī)范也是讓代碼更清晰明了蝴簇,易讀,易用匆帚,易維護熬词,可以更好的適應(yīng)團隊開發(fā)。自己看著也是賞心悅目吸重,何樂而不為呢互拾。
1.基本準則
1.1編寫清晰
簡單明了的命名最好,不要用單詞的簡寫晤锹,盡量用單詞的全稱摩幔。可以看看蘋果的API格式鞭铆,仿照蘋果的命名或衡,盡量用英文,而不是拼音车遂。
1.2一致性
比如方法名的功能類型的一致性封断,比如獲取某些數(shù)據(jù) - (NSString *)getName,- (NSString *)getAge 中的get舶担;或者設(shè)置數(shù)據(jù) - (void)setName坡疼,- (void)setAge 中的set。統(tǒng)一方法名可以讓人一看這方法就知道是干什么用的衣陶,提升開發(fā)效率柄瑰。
1.3駝峰原則
- 大駝峰原則:每個單詞的首字母大寫(UserNameTextField)
- 小駝峰原則:第一個單詞首字母小寫,其余都大寫(userNameTextField)
2.命名規(guī)范
2.1類命名
類的命名是采用大駝峰原則剪况,如
UserLoginViewController
在實際開發(fā)中教沾,一般會在類名前面加個前綴:
OYUserLoginViewController
加統(tǒng)一前綴方法如下圖:
設(shè)置完后,每次在創(chuàng)建類的時候會自動添加前綴译断。
User → 用戶
Login → 登陸
ViewController → 控制器
這個類的用途就一目了然了
其他例子:OYUserModel授翻,OYTitleView,OYNetManager孙咪。堪唐。。
應(yīng)用級別的類名(需要在其他項目中用到的類)翎蹈,可以不使用前綴或者使用自定義前綴
即為:PhotoBrowser或者XXPhotoBrowser
2.2分類命名
UIView+OYFrame 或者 UIView+OYExtension
前者是對UIView這個類做的擴展别凤,OY是前綴烙如,F(xiàn)rame算是具體化功能,對Frame獲取猴伶。比較清晰。
后者也是對UIView這個類擴展,但是并沒有寫明具體功能,可以在里面添加關(guān)于UIView的很多擴展。具體功能可以在.h文件里注釋糠爬。文件較少易于管理。
二者的選擇看個人喜好了
2.3方法命名
方法的命名是采用小駝峰的原則举庶,如
- (XXModel *)modelWithDictionary:(NSDictionary *)dictionary;
此類命名可以模仿蘋果提供的API执隧,看見方法名大概可以猜出開是做什么的。注意參數(shù)名也是小駝峰式的户侥。
代理方法仿照蘋果API镀琉。
2.4變量命名
普通變量采用小駝峰原則,
NSInteger userCode;
成員變量要在前面需要加下劃線'_'
@interface ViewController () {
NSString *_sex;
NSString *_birthday;
NSInteger _nameCount;
}
全局變量我一般在末尾加個下劃線'_'
NSInteger userCode_;
2.5常量命名
常量(宏蕊唐、枚舉屋摔、全局常量、局部常量等)
1. k + 大駝峰 kUserCode
2. 前綴 + 大駝峰 OYUserCode
3. 單詞大寫加'_' USER_CODE
枚舉:下面是個我寫的啟動頁廣告點擊事件的枚舉替梨,可以參考下
typedef NS_ENUM(NSInteger, OYLaunchImageAdViewActionType) {
OYLaunchImageAdViewActionTypeAd, //點擊廣告
OYLaunchImageAdViewActionTypeSkip, //點擊跳過廣告
OYLaunchImageAdViewActionTypeTimerOver, //廣告定時器結(jié)束
};
2.6文件夾命名
創(chuàng)建文件夾最好創(chuàng)建實體文件夾钓试,找到工程目錄,創(chuàng)建相應(yīng)文件夾并拖入工程副瀑。
文件夾命名使用相應(yīng)模塊的英文弓熏,首字母要大寫。
分享下Xcode8的兩個注釋快捷鍵
- command + / 所選行會被注釋掉
- command + option + / 在方法名或變量名的所在行或上一行使用糠睡,會自動填充注釋段挽鞠,可輸入方法參數(shù)的意思或者作用。
3.編碼規(guī)范
- 刪除多余的空行
1.1 所有的方法之間空一行
1.2 所有的代碼塊之間空一行 - 刪除多余的注釋
2.1 刪除不用的代碼
2.2 刪除沒有意義的注釋 - 刪除多余的方法
3.1 如果有方法一直不會用到狈孔,請刪除(除工具類)
3.2 沒有執(zhí)行任何業(yè)務(wù)邏輯的方法信认,請刪除或給予注釋 - 刪除多余的資源或文件
- 添加必要的注釋
5.1 所有 .h 文件中的property 需要給出清晰注釋,非必要變量請勿防止出現(xiàn)在 .h文件中
5.2 比較大的代碼塊需要給出注釋
5.3 所有自定義的方法需要給出注釋
5.4 所有代碼中出現(xiàn)的阿拉伯?dāng)?shù)字需要給出注釋
5.5 程序中出現(xiàn)加密/解密 邏輯的操作地方均抽,需要給出注釋說明過程(無論是系統(tǒng)還是自定義) - 盡量少用大段打印狮杨,非必要可以注釋或刪除,盡量消除警告(不影響程序正常運行)
- 整體代碼風(fēng)格要統(tǒng)一
7.1 代碼后的'{'不需要獨占一行
7.2 運算邏輯符和變量之間空一格
7.3 多用#pragma mark - xxx講方法分塊到忽,#pragma mark與下面的代碼之前不要空行
7.4 遵循一般代碼規(guī)范,多模仿蘋果API
4.通用規(guī)范
1 下面所有規(guī)則對第三方類庫無約束
* 所有類清寇、方法喘漏、屬性等命名,做到見名知意华烟,采用駝峰式命名規(guī)則
* 根據(jù)資源類型或者所屬業(yè)務(wù)邏輯對項目資源進行分組翩迈,使得整個項目結(jié)構(gòu)清晰明了
* 整個項目保持一種代碼書寫風(fēng)格(這個風(fēng)格由無錫團隊根據(jù)自己編碼習(xí)慣來定),讓你的代碼變的優(yōu)雅盔夜!
2. 命名規(guī)范
* 所有類名稱以項目工程開頭命名负饲,eg:“XP”堤魁、“ZJG”、“SZ”
* 針對不同視圖控制器返十,在末尾添加后綴妥泉,eg:
UIViewController 后綴添加“ViewController”
UIView 后綴添加“View”
UIButton 后綴添加“Button”、“Btn”
UILabel 后綴添加“Label"
3. 單頁代碼最好控制在800行以內(nèi)洞坑,每個方法最好不要超過100行盲链,過多建議對代碼進行重構(gòu)
4. 相同的邏輯方法定義避免在多個地方出現(xiàn),盡量將公用的類迟杂、方法抽取出來
5. 刪除未被使用的代碼刽沾,不要大片注釋未被使用的代碼,確定代碼不會使用排拷,請及時刪除
6. 對其他項目中copy過來的代碼侧漓,根據(jù)具體需要更新代碼風(fēng)格,及時刪除未被使用的代碼
7. 項目中所有Group或者文件名稱(圖片名字等)监氢,不要使用漢字命名布蔗,盡量使用英文命名,國內(nèi)特有名詞可以使用拼音忙菠。
8. 項目中所有Group都需要在項目目錄中存在一個真實的目錄何鸡,Group中的文件與真實目錄中文件一一對應(yīng)。
9. 請在項目中寫必要代碼的注釋
10. 請多使用 #pragma mark - Mark Name 對方法進行分組 eg:
* #pragma mark - View lifeCycle
* #pragma mark - View lifeTerm
* #pragma mark - Init methods
* #pragma mark - Action methods
* #pragma mark - Common methods
* #pragma mark - UIActionSheetDelegate
* #pragma mark - UIImagePickerControllerDelegate
* #pragma mark - UITableViewDelegate Methods
* #pragma mark - UITableViewDataSource Methods
* #pragma mark - UIScrollViewDelegate Methods
* #pragma mark - UITextFieldDelegate Methods
* #pragma mark - UITextViewDelegate Methods