ios代码规范(ios swift是前端还是后端)
发布:小编
下面说下iOS的代码规范问题,如果大家觉得还不错,可以直接用到项目中,有不同意见 可以在下面讨论下。
相信很多人工作中最烦的就是代码不规范,命名不规范,曾经见过一个VC里有3个按钮被命名为button1、button2、button3,我也是醉了!
下面的规范有的定的比较死,大家可以根据自己团队的风格进行修改。该文章主要是OC的代码规范,有几个是Swift的规范。
OC和Swift的代码规范如下:
一、VC生命周期 模块排列顺序
1、 注意
#pragma mark -(加横线)是用来 区分大模块的,首字母要大写。
#pragma mark(不加横线)是标注 小模块的, mark与函数第一行不要有空行,没有的模块不用写mark。
2、基本标准
#pragma mark - Life Cycle
viewDidLoad前的
viewDidLoad
viewDidLoad后的
dealloc
#pragma mark - (系统提供的delegate)
#pragma mark - (自定义的delegate)
#pragma mark - (第三方的delegate)
#pragma mark - Event response // 这里主要放IBAction,通知,gesture等
#pragma mark - Public method
#pragma mark - Private method
#pragma mark - Getters and Setters
3、项目中常用到的标准
#pragma mark - Life Cycle
#pragma mark - OveRride
#pragma mark - UITableViewDelegate
#pragma mark - CustomDelegate
#pragma mark - Event Response
#pragma mark - Public Methods
#pragma mark - Private Methods
#pragma mark - Getters and Setters
二、VC里都要 加入 dealloc 方法
如果退出该页面,没有执行dealloc 方法,就是存在内存泄露的问题,所以都加上dealloc方法,并打印日志。养成习惯。
三、控件统一后缀名。
1、常用的后缀名规则
除了下面几个进行浓缩,其他的只去掉UI 就可以了(如UITextField写成:TextField):
UIButton Btn
UILabel Lbl
UITableViewCell :Cell
Image :Img
UIViewController: VC
UITableViewController :TableVC
2、其他
2.1、新建一个UIViewController 文件 后缀要 ViewController
2.2、新建一个UITableViewController 文件后缀要 ViewController
2.3、多个tag :用 枚举 定义, 后缀:Tag
四、统一方法名
这个规范是为了大家看每个页面,一看就知道那个方法是做什么的,每个团队都应该根据自己的特点来定制。
如果团队中有几个人的命名很不规范(写的方法名都看不懂),就需要按这条进行统一命名。如果团队的成员都能很好的命名 这条就可以省略。
1、初始化所有控件 统一一个方法名:initAllView
2、初始化数据 的方法名:initData
3、请求网络,统一方法名前缀
vc 里 只有一个网络请求::loadNetData
多个 加后缀:load****NetData
4、网络层的类加后缀: ***Request
5、Model 都要加后缀Model。。
6、点击事件的前缀:tap
五、文件#import和@end
1、import规整顺序, @end后留1个回车位置, @end前最后一个函数空1行
2、先 import类本身.h 再<>,之后”",include写在一起
#import “AppDelegate.h"
#import <arpa/inet.h>
#import "OpenUDID.h"
六、换行与括号
1、多个协议名称过长不用换行 依靠xcode自动伸缩。
2、方法 没有参数或参数在一行,后面括号 不要换行,如:- (id)responseObject {。
方法有多个参数,参数换行,括号换行,如:
- (AF***eration *)PUT:(NSString *)URLString
parameters:(id)parameters
success:(void (^)(AF***eration *operation, id responseObject))success
failure:(void (^)(AF***eration *operation, NSError *error))failure
{
七、@property规范
1、@property(notatomic, weak, readonly) id<SecondPicDelegate> delegate; //notatomic, weak先写
2、weak , copy的使用要多注意, NSArray ,NSdictionary, NSString 属性定义尽量用copy,这是为了防止赋值给它的是可变的数据,如果可变的数据发生了变化,那么该property也会发生变化。
3、变量先按功能分类摆放再按类型摆放,可考虑右对齐
八、Define模块
1、每个define按模块分类后, 照字母自然顺序排序
九、Typedef的规范
可以多选判断的时候要用下面的格式:
typedef NS_OPTIONS(NSUInteger, SDWebImageOptions) {
SDWebImageRetryFailed = 1 << 0,
SDWebImageLowPriority = 1 << 1,
SDWebImageCacheMemoryOnly= 1 << 2,
SDWebImageProgressiveDownload = 1 << 3,
SDWebImageRefreshCached = 1 << 4,
SDWebImageAvoidAutoSetImage = 1 << 11
};
十、常用命名规则
1、 类,方法命名
类名首字母大写,方法首字母小写,方法中的参数首字母小写,第二个参数名开始不要加"with", -, +号后面由一个空格
同时尽量让方法的命名读起来像一句话,能够传达出方法的意思
同时取值方法前不要加前缀“get”
点击按钮前带 "click"前缀,手势带"tapGesture"类似的,通知前缀"notification", 后面不用带_
2、变量命名
意思完整性, 变量的命名btn, img类型在特征词最后,如 softBtn, homeVc, redImg
3、图片目录和命名
btn按钮的图,默认按下高亮为普通状态图片名称最后带上后缀 “_h"
一级目录(功能)_二级目录(是btn还是img)_三级目录(特征),如goodlist_btn_greenArrow
十一、调试用法
1、TODO
临时处理方案或者未做的实现 加TODO。
2、NSAssert
使用断言NSAssert来跟踪异常: NSAssert(theDate != nil, @"Argument must be non-nil”);
3、Instruments
检查自己模块的内存、占用时间、cpu等使用情况。
十二、要注意的
1、初始化”id" 写成 "instancetype"
2、int 用NSInteger,float用CGFloat
3、”:" 后别加空格, 函数第一个大括号不要换行
4、static const NSString * kLNasss = @""";
5、只要出现“,” 后面肯定要写一个空格
6、注释灵活处理,复杂方法需要解释清楚
7、无关的方法,变量都放到.m里
8、尽量别直接使用数字,字符串赋值,除非后面带上说明该值来历
9、 固定 的 字符串、数字 。如果 只有一处用了,就写死。尽量 注释。
如果一个页面用多次,就在这个页面定义 define
如果多个页面 使用(多个地方 需要同时修改) 就定义成常量
10、if else 的问题。
//这里写整体的注释
if () {
} else { //这里写不写都行
}
十三、使用block要注意循环引用
虽然局部变量大多数里面的self不用weak也不会引起循环引用(tableview展示cell的时候例外cellForRowAtIndexPath),但是还是推荐大家都加上__weak。
十四、reviewboard的使用流程
先打diff、再把diff 提交 reviewboard、 再提交svn(打标签的时候带CR:版本)
十五、重要的公用功能 .h 用的注释格式:
/**
*
*
*/
这样写可以用快捷键查看注释的内容 ,一般的不用这样写。。
十六、scrollViewDidScroll
重写 scrollViewDidScroll 方法的页面 ,要在dealloc中将scrollview.delegate = nil 。。否则 点击返回键会崩溃。 iOS 9 修复了 scrollViewDidScroll崩溃的问题。
十七、Swift文件里 打印日志 用print, 一定不能用NSLog
因为Swift 用NSLog 会记录到系统日志,可以被黑客获取。
用宏定义来屏蔽release环境下的NSLog日志输出 对 Swfit是没用的。
如果有补充或不同意见可以讨论下。
版权声明:本文来自用户投稿,不代表【百发生活】立场,本平台所发表的文章、图片属于原权利人所有,因客观原因,或会存在不当使用的情况,非恶意侵犯原权利人相关权益,敬请相关权利人谅解并与我们联系(邮箱:)我们将及时处理,共同维护良好的网络创作环境。
大家都在看
-
ios 14.1正式版来电显示(ios14.1正式版来电显示)
数码极客今早一起床惊喜地发现,iOS14.1正式版来了,迫不及待地更新了,可是自带的输入法打字时,有些候选字依然不能按近期输入顺序自动调整;iPadOS里自带的「图书」app在横屏看epub书时,依然不能分页显示,看来只能等待下一轮更新来完善了⋯iOS14.1系统,依旧流畅,为了解决来电
-
youtube 频道会员 ios
数码极客继日前开通“Apple支持”微博账号之后,苹果近期在全球最大视频网站YouTube上开通了“Apple TV”频道账号,专门提供各种电影电视剧的预告片、幕后花絮、演员专访等等。援引最早发现的MacStories表示,该频道已经上线1个月了,当时苹果宣布了重新设计的Apple TV
-
ios.0怎么更新,苹果怎么更新ios系统
综合百科ios11.0怎么更新 适用品牌型号:iPhone7;系统:ios14;1、打开苹果7手机设置按钮,进入,点击通用选择软件更新&rdquo。2、点击后,页面会检测系统是否有更新,等待检测。3、检测后如有更新至
-
ios 小米手环5怎么设置太空人表盘
数码极客最近太空人表盘很,个个都想换成这个表盘。奈何用iphone 手机不太好操作。但是很多操作都需要用安卓手机,苹果党就伤心了,无法使用。最近出来一种新方法,可以轻松的将小米手环改为太空表盘,而且不需要安卓手机。真的很方便快捷。先去酷安市场搜索小米手环5 或者6的表盘文件。通过电脑发送
-
ios 15再曝光这些功能真的很实用
综合百科机哥现在都不知道怎么说iOS 15了,正式版的Bug都还能影响日常使用。先是Apple Watch无法解锁iPhone 13,这可是第一个推送版本呀,就出这个问题。然后是iOS 15屏幕触控失灵。如果不是看到网友都讲到这个问题,机哥都还以为是自己手机卡了。就更别说一系列的卡死、闪
-
ios 16正式版更新有电量百分比吗
数码极客作为热搜榜的「常驻嘉宾」,苹果这两天又双叒上去了。#iOS系统电量百分比回归#、#iPhone 14系列或全系涨价#......好家伙,每天换一个花样。众所周知,自 iPhone X 发布以来,苹果就告别了桌面的电量百分比显示。虽然只是一个小小的改动,但每次想看剩余电量时,都得下
-
Rutube阻止在除俄罗斯以外的所有国家/地区在 iOS 上该应用程序
数码极客据塔斯社8月16日报道,俄罗斯视频服务公司 RuTube已阻止在除俄罗斯以外的所有国家/地区在iOS上下载该应用程序的能力。在苹果要求对应用程序隐藏官方媒体频道后, RuTube采取了此类措施。消息称,“现在只能在俄罗斯下载适用于iOS的Rutube应用程序。做出这一决定是为了让
-
iOS 3在哪里开启三维触控,华为手机怎样打开三维触控
综合百科iOS 13在哪里开启三维触控 苹果手机升级到iOS13系统后,在哪里打开三维触控?下面,小8分享下iOS13在哪里开启三维触控。打开手机设置页面里的辅助功能然后点开页面里的触控点开后在页面里找到三维触控与触
-
ios 17 beta 1存在sms短信发送问题
数码极客IT之家 6 月 15 日消息,苹果在 6 月 5 日召开 WWDC 2023 开发者大会之后,就邀请开发者和用户测试 iOS 17 Beta 1 更新。不过用户反馈升级到新版本之后,出现了无法向非 iPhone 用户发送 SMS 短信的问题。IT之家查询 Reddit 社区、T