分三大块:命名, 注释,类内分块结构写法
命名
一切的命名都是驼峰命名规则
前缀
所有类名、枚举、结构、 protocol 定义时,都加上全大写的 MT作为前缀,MT是我们项目马踏飞燕的两个字,大家都这样写,所以取名"MT",有些两个字母的可能会被苹果内定,所以取名三个字母
后缀
所#有 protocol 定义时,都加上后缀 Delegate 。如, MTRefreshViewDelegate ,表示 MTRefreshView 的协议
方法命名
方法名首字母小写,其他单词首字母大写,每个空格分割的名称以动词开头。如:
<pre>- (void)insertModel:(id)modelatIndex:(NSUInteger)atIndex;</pre>
属性、变量命名
每个属性命名都加上类型后缀,如,按钮就加上 Button 后缀,模型就加上 Model 后缀。eg:
<pre>@property (nonatomic, strong) UIButton *submitButton;</pre>
bool属性命名
<pre>
/** 是否隐藏底部线条 YES 隐藏 NO 显示 */
@property (nonatomic,assign,getter=isLineHidden) BOOL lineHidden;
</pre>
无论是方法命名还是属性命名都要遵循驼峰命名法规则。
新版本所有属性都需要用@property的形式申明变量,不得其他形式声明
类命名
每个类命名尽量以看名知意的方式命名 eg:
<pre>
我的控制器: MTMindController ,像有TableViewController这种,还是以Controller结尾,不需要MTMindTableViewController形式
我的控制器的cell: MTMindCell 如果是View则 MTMindView
用户Model: MTUserModel
</pre>
文件夹命名
文件夹命名外部模块文件夹,以英文加中文命名方式。如图
外部模块文件夹命名方式一般项目按照这个方式模块命名,代理不需要中文,但是需要加前缀
例如Modules(功能模块里边还是有新的模块命名方式依旧如此)。
具体模块比如,我的 MTMind,这下面的模块需要普通的Controller Model View 和Tools 4个文件夹即可,不需要加中文。tools一般备用或采用中介者开发时用到
代理方法(委托方法)/数据源方法命名
委托⽅方法是那些在特定事件发⽣生时可被对象调⽤用,并声明在对象的委托类中的⽅方法。它们有独特的命名约 定,这些命名约定同样也适⽤用于对象的数据源⽅方法。
1、名称以标示发送消息的对象的类名开头,省略类名的前缀并且小写第⼀个字⺟
<pre>
- (BOOL)tableView:(NSTableView*)tableViewshouldSelectRow:(int)row;
- (BOOL)application:(NSApplication *)sender
openFile:(NSString *)filename;
</pre>
2、冒号紧跟在类名之后(随后的那个参数表⽰委派的对象)。该规则不适用于只有一个 sender 参数的⽅法:
<pre>
- (BOOL)applicationOpenUntitledFile:(NSApplication *)sender;
</pre>
3、上⾯的那条规则也不适⽤于响应通知的⽅法。在这种情况下,⽅方法的唯⼀参数表⽰通知对象
<pre>
- (void)windowDidChangeScreen:(NSNotification *)notification;
</pre>
4、⽤于通知委托对象操作即将发生或已经发⽣的方法名中要使⽤ did 或 will
<pre>
- (void)browserDidScroll:(NSBrowser *)sender;- (NSUndoManager *)windowWillReturnUndoManager:(NSWindow *)window;
</pre>
枚举常量命名及形式
枚举常量命名以 MT为前缀,命名以 MT 为前缀,而枚举值以大写 MT 开头,后面的单词首字母大写,其余小写。如:
typedef NS_ENUM(NSUInteger, MTContentMode) {
MTContentModeScaleFit ,
MTContentModeScaleFill
};
枚举用NS_ENUM 这种OC的形式,不能用c的形式
const常量命名
以小写 k + MT 开头,后面单词首字母大写,其余小写。如:
const float kBNPMaxHeigt = 100.0f;
如果是静态常量,仅限本类内使用的,加上前缀 s_ ,如果是整个工程共用,以 sg_ 为前缀。如:
s_MTMaxHeight;
sg_MTMaxHeight;
其他常量命名
1、使用 #define 声明普通常量,以小写 k+ MT 开头,后面的单词首字母大写,其余小写。如:
<pre>
define kMTScreenWidth ([UIScreen mainScreen].bounds.size.width)
</pre>
2、通知常量名,以Notification为后缀,如:
<pre>
define MTLoginSuccessNotification @”MTLoginSucessNotification”
</pre>
代码注释
类注释
类头需要有注释,功能说明,作者等:如
<pre>
/**
- 这里是功能说明
- @author Huangyibiao
- @modify 如果有修改需要这行,加上修改人和修改日期
*/
@interface MTUIMaker : NSObject
</pre>
上述是一般语言写法,我们iOS 项目中创建项目会自行的把 文件名,项目名,作者,创建时间等信息写在文件最上边,如
<pre>
//
// AppDelegate.swift
// silknets
//
// Created by upintech on 17/6/1.
// Copyright © 2017年 ZZMo. All rights reserved.
//
</pre>
那么这个时候类文件书名只需要在最下边添加中文说明即可。
方法注释
方法注释需要加上功能说明,参数说明,返回值说明,一般还有作者,作者这里可不写:
<pre>
/**
- @author
- 描述内容
- @param string <#string description#>
- @param font <#font description#>
- @return <#return value description#>
*/
- (CGSize)sizeWithString:(NSString*)stringand Font:(UIFont *)font;
</pre>
上述代码风格也就是喵神的代码注释插件风格,添加即可,现在苹果Xcode8.0开始自带此功能
属性注释
<pre>
对应属性,标明属性表示的意思 风格一:
/※ 属性说明 ※/ ※是 **[这里我不知道怎么写出两边都有这个小星的符号]
风格二:
/※
※ 属性说明
※
※/
</pre>
类内分块结构写法
<pre>
pragma mark - Life Controller : ViewController 生命周期方法 ,其中包含dell方法
pragma mark - SetupSubView 子空间方法添加
pragma mark - Func 添加功能以及逻辑的私有方法 :
Fun旗下有 private Func 和public Func
pragma mark - Action 行为,例如按钮等动作 ,通知,kvo等回调方法
pragma mark - Animation 动画
pragma mark - Deleget & DataSource delegate 和 dataSource方法
各个Delegate方法和DataSource的具体代理需要分开写
pragma mark - LoadData 数据加载
pragma mark - set & get : 写setter和getter方法
</pre>
注意,懒加载里边不要写逻辑,ViewDidLoad里边尽量加载控件,不要写frame或者约束以及其它具体逻辑
上述需要按照顺序编写,查看写方便
网友评论