iOS代码规范总结

2016-10-17  本文已影响104人  Evans_Xiao

iOS代码规范总结

一、命名规则:

1、文件名:全小写,使用下划线分割单词,如

lib_st_idcard_scanner,
face_head.jpg . 

2、类名:大写开头,驼峰原则,如

STIDCard,
STIDCardScanner. 

3、变量名:小写开头,驼峰原则,类型做为前缀,如

4、宏:

方法一:静态标志+常量标志+数据类型+变量名

static const NSTimeInterval kAnimationDuratin = 0.3;

解析其好处:

方法二:

.h文件中
extern NSString *const ConstString; // extern表示声明一个全局变量,也可修饰函数。

.m文件中
NSString *const ConstString = @"a string";  

解析:
使用#define ANIMATION_DURATION 0.3会遇到的问题:

二、代码注释:

1、作用:

2、使用规则:

1、实例变量和成员变量(两者注释方法相似,以实例变量介绍为主):

///view 第一种样式注视
@property (strong, nonatomic) UIView * view1;

效果如下:

view2_1.png
 /** view 第二种样式注视 */
@property (strong, nonatomic) UIView *view2;
- 方式二:

    -
@property (strong, nonatomic) UIView *view2; /** view 第三种样式注视 */

2、对象方法或类方法:

/**
 *  通过图片来提取人脸特征,ps: 此过程需 detector
 *  @param image 包含有人脸的图片
 *  @param hDetector detector句柄,用来检测是否存在人脸
 *  @param hVerify verify句柄,用来提取人脸特征
 *  @return 人脸特征
 */
+ (NSData *)extractFeatureWithImage:(UIImage *)image withDetector:(cv_handle_t)hDetector withVerify:(cv_handle_t)hVerify;

效果如下:

view2_2.png

更好的代码风格

代码宽度
一般我们所写的代码最好不要太长,目前主流的代码规范都推荐代码宽度保持在 80 为宜,这么做当然是有历史原因,但在现在也还是有其实用价值的。因为将代码宽度限制在 80,是在需要打印代码的时候,完美适配 A4 纸的宽度。即使只是将代码贴在个人博客或在线网站上,这也是最适合代码阅读的宽度。当使用大屏显示器编程时,这个宽度也是很适合分屏工作的。

三、自定义公共类:

我司移动开发组的代码主要有git仓库统一管理,同时为了方便开发,已将常用的公共库做了统一管理,主要集中在iOSLibrary仓库中上.

1、STCommon

/**
 * 判断当前Wi-Fi是否可用
 * @return BOOL,返回BOOL值
 */
+ (BOOL)st_isWiFiEnabled;

/**
 * 获取当前设备的IP地址
 * @return NSString,设备IP,eg:192.168.2.58
 */
+ (NSString *)st_getDeviceWiFiIP;

/**
 * 当前应用的内存使用情况
 * @return double 浮点数, eg:23.3M
 */
+ (double)st_getUsedMemory;

/**
 * 当前应用的CPU使用情况
 * @return float 浮点数,百分比
 */
+ (float)st_getCpuUsage;

/**
 * 字符串转换成字典
 * @param stringJson 输入字符串
 * @return NSDictionary,字典
 */
+ (NSDictionary *)st_dictionaryWithJsonString:(NSString *)stringJson;
#warning 字典转换成字符串

/**
 * 验证输入手机号格式是否正确
 * @param mobileNum 输入的手机号
 * @return BOOL,返回BOOL值
 */
+ (BOOL)st_isMobileNumber:(NSString *)mobileNum;

/**
 * 验证输入邮箱号格式是否正确
 * @param Email 输入的邮箱
 * @return BOOL
 */
+ (BOOL)st_isEmail:(NSString *)Email;

/**
 * 获取当前设备的方向
 * @return UIDeviceOrientation.
 */
+ (UIDeviceOrientation)st_getDeviceOrientation;

/**
 * 判断当前设备是否是iPad
 * @return BOOL
 */
+ (BOOL)st_isiPad;
/**
 * 判断当前设备类型判断,根据屏幕的Size
 * @return Device_ENUM
 */
+ (Device_ENUM)st_getDeviceTypeWithSize:(CGSize)sizeScreen;

/**
 * 判断当前设备类型判断,根据屏幕的Rect
 * @return Device_ENUM
 */
+ (Device_ENUM)st_getDeviceTypeWithRect:(CGRect)rect;

2、PhotoTool

/**
 * 获取相册胶卷中最后一张照片
 */
+ (void)pt_getLastestPhoto:(void(^)(UIImage *imgLastestPhoto,NSError *error))block;

/**
 * 判断是否相机授权
 * @return BOOL
 */
+ (BOOL)pt_isAuthCamera;

/**
 * 判断是否相册授权
 * @return BOOL
 */
+ (BOOL)pt_isAuthPhotoLibrary;

/**
 * 将视频流数据转化为图片
 * @param sampleBuffer 视频流数据buffer
 * @return 图片
 */
+ (UIImage *)pt_imageFromSampleBuffer:(CMSampleBufferRef)sampleBuffer;

/**
 * 将图片转化为无符号字符指针,主要用于FaceSDK人脸检测
 * @param image 图片
 * @return 无符号字符指针
 */
+ (unsigned char *)pt_getBGRAfromImage:(UIImage *)image;

/**
 * 放大、缩小图片
 * @param size 需要的图片大小
 * @param image 源图片
 * @return UIImage,处理后的图片
 */
+ (UIImage *)pt_imageScaledSize:(CGSize)size originalImg:(UIImage *)image;

/**
 * 对图片进行裁剪
 * @param rect 需要的图片Rect
 * @param image 源图片
 * @return UIImage,处理后的图片
 */
+ (UIImage *)pt_imageCropedWithRect:(CGRect)rect originalImg:(UIImage *)image;

/**
 * 将图片裁剪成圆形
 * @param borderWidth 裁剪的宽度
 * @param bgColor 背景颜色
 * @return UIImage,处理后的图片
 */
+ (UIImage *)pt_imageCircledWithBorderWidth:(CGFloat)borderWidth bgColor:(UIColor *)bgColor originalImg:(UIImage *)imageOriginal;

3、NSObject+STExtension

@property (assign, nonatomic) CGFloat st_width;
@property (assign, nonatomic) CGFloat st_height;

@property (assign, nonatomic) CGFloat st_x;
@property (assign, nonatomic) CGFloat st_y;

@property (assign, nonatomic) CGFloat st_centerX;
@property (assign, nonatomic) CGFloat st_centerY;

@property (assign, nonatomic) CGFloat st_right;
@property (assign, nonatomic) CGFloat st_bottom;

@property (assign, nonatomic) CGSize st_size;

+ (instancetype)st_viewFromXib;

/**
 * 判断View会不会与当前View交错、重叠
 * @param view 需要判断的View
 * @return BOOL,返回BOOL值
 */
- (BOOL)isIntersectsRectWithView:(UIView *)view;

/**
 * 将一张图片作为背景
 * @param str 图片的名字
 */
- (instancetype)addsetBackgroundImageName:(NSString *)str;
///占位文字颜色
@property (strong, nonatomic) UIColor *placeholderColor;
+ (UIColor *)colorWithRGBHex:(UInt32)hex;
+ (UIColor *)colorWithRGBHex:(UInt32)hex r:(float)fAlpha;

4、FaceSDKTool

四、第三方库类:

1、网络请求类

2、图片下载类

3、上下拉刷新

4、数据模型解析

5、近场通信

6、第三方工具

上一篇 下一篇

猜你喜欢

热点阅读