命名規范
小駝峰命名法(CamelCase):第一個單詞小寫字母開頭,其他單詞首字母大寫;
大駝峰命名法(PascalCase): ? 所有首字母大寫。
統一要求:含義清楚,盡量做到不需要看注釋也能了解其作用,使用全稱,不使用縮寫。
1、類的命名
* 大駝峰式命名:每個單詞的首字母都采用大寫字母, ? 例子:MFHomePageViewController
* 后綴要求
? ? ? ? ? ? ViewController: 使用ViewController做后綴
? ? ? ? ? ? 例子: HXHomeViewController
? ? ? ? ? ? View: 使用View做后綴
? ? ? ? ? ? 例子:HXAlertView
? ? ? ? ? ? UITableViewCell:使用Cell做后綴
? ? ? ? ? ?例子: HXNewsTableViewCell
? ? ? ? ? ?Protocol: 使用Delegate作為后綴
? ? ? ? ? ?例子: UITableViewDelegate
? ? ? ? ? ?UI控件依次類推
2、宏命名
* 全部大寫,單詞間用 _ 分隔。[不帶參數]
? ? ? ? ? 例子: #define THIS_IS_AN_MACRO @"THIS_IS_AN_MACRO"
* 以字母 k 開頭,后面遵循大駝峰命名。[不帶參數]
? ? ? ? ? 例子:#define kWidth self.frame.size.width
* 小駝峰命名。[帶參數]
? ? ? ? ? #define getImageUrl(url) [NSURL URLWithString:[NSString stringWithFormat:@"%@%@",kBaseUrl,url]]
3、Enum
* Enum類型的命名與類的命名規則一致
* Enum中枚舉內容的命名需要以該Enum類型名稱開頭
例子:
typedef NS_ENUM(NSInteger, AFNetworkReachabilityStatus) {
AFNetworkReachabilityStatusUnknown = -1,
AFNetworkReachabilityStatusNotReachable = 0,
AFNetworkReachabilityStatusReachableViaWWAN = 1,
AFNetworkReachabilityStatusReachableViaWiFi = 2
};
4、類的成員變量
* 小駝峰式命名:第一個單詞以小寫字母開始,后面的單詞的首字母全部大寫
* 以 _ 開頭,第一個單詞首字母小寫
? ? ? ? ? 例子:NSString * _somePrivateVariable
* 私有變量放在 .m 文件中聲明
5、屬性
* 小駝峰式命名
例子:@property (nonatomic, copy) NSString *userName;
UILabel? *userNameLabel;
UIButton *userNameButton;
UIImageView *userNameImageView
UIView *userNameView;
6、方法
* 方法名和方法參數遵循相同的規則,使用小寫開頭的小駝峰法;
* 方法名和參數盡量讀起來像是一句話;
* 方法名不允許使用“get“前綴;
* -或+與返回類型間留一個空格,但參數列表之間不要留間隔;
* 如果參數過多,推薦每個參數各占一行;
例如:- (void)doSomethingWithString:(NSString *)theString (NSInteger *)theInteger { ? ... ? } ?;
書寫規范:
1.方法大括號和其他大括號(if/else/switch/while 等.)總是在同一行語句打開但在新行中關閉。
2. 在m文件中對當前類屬性進行引用的時候,使用self.property的方式,用以區分局部變量;對屬性進行賦值的時候使用“點”賦值,即A.property = value;
3. 使用import引用頭文件的工作全部放到 .m 文件中進行,.h文件用到的類型盡量用@class聲明,然后在.m里import;
4. 如果m文件中有較多的method,使用 #pragma mark 標記對方法進行分組,便于查看;
在函數分組和protocol/delegate實現中使用#pragma mark -來分類方法,要遵循以下一般結構:
#pragma mark - Lifecycle
- (instancetype)init {}
- (void)dealloc {}
- (void)viewDidLoad {}
- (void)viewWillAppear:(BOOL)animated {}
- (void)didReceiveMemoryWarning {}
#pragma mark - Custom Accessors
- (void)setCustomProperty:(id)value {}
- (id)customProperty {}
#pragma mark - IBActions
- (IBAction)submitData:(id)sender {}
#pragma mark - Public
- (void)publicMethod {}
#pragma mark - Private
- (void)privateMethod {}
#pragma mark - Protocol conformance
#pragma mark - UITextFieldDelegate
#pragma mark - UITableViewDataSource
#pragma mark - UITableViewDelegate
#pragma mark - NSCopying
- (id)copyWithZone:(NSZone *)zone {}
#pragma mark - NSObject
- (NSString *)description {}