美文网首页
盈软iOS代码规范

盈软iOS代码规范

作者: 走进科学 | 来源:发表于2018-01-29 10:29 被阅读51次

0.写在前面

  • 本文中所提到的规范不规范大部分其实没有明显的优劣之分只是一种偏好,但出于管理统一,以及他人维护成本的考量.也请各位务必遵守此份规范.

1.命名规范

  • 1.1使用驼峰下划线来表示单词间隔:正常情况下建议使用驼峰,少数情况如第三方代码或数据模型可以使用下划线.
驼峰:userName
下划线:user_name
  • 1.2首字母大小写:类名首字母大写,变量名方法名属性名、首字母小写.
类名: UserModel.h
变量名:redView
方法名:- (void)doSomething
属性名:@property (nonatomic, copy) NSString *name;
  • 1.3前缀: 类名的前缀须以YS开头.
    类名前缀
  • 以此方法快速设置前缀,如下图所示在Class Prefix内填入YS
    前缀自动填充

=- 1.4后缀:对象后缀需要做到见后缀知类型

UIViewController: XXXViewController
UIView: XXXView
UILabel: XXXLabel
  • 1.5缩写推荐使用缩写可以使代码更简洁紧凑,只采纳有广为人知含义的缩写,单请勿自行创造缩写.
规范: info = information
       UI = userinterface
      msg = message
      dict = dictionary
不规范: psn = person

2.在类的头文件中尽量少引用其他头文件

  • 有时,类A需要将类B的实例变量作为它公共API的属性。这个时候,我们不应该引入类B的头文件,而应该使用向前声明(forward declaring)使用class关键字,并且在A的实现文件引用B的头文件。
.h
#import <Foundation/Foundation.h>
@class YSDog;
@interface YSPerson : NSObject

@property (nonatomic, copy) NSString *name;

@property (nonatomic, assign) NSUInteger age;

@property (nonatomic, strong) YSDog *dog;

@end

.m
#import "YSPerson.h"
#import "YSDog.h"

@implementation YSPerson

@end

2.编码规范

  • 2.1.多用字面量语法
规范:NSString *str = @"123";
   NSArray *array = @[@1, @2, @3];
   array[1];

不规范:NSString *str = [NSString stringWithString:@"123"];
   NSArray *array = [NSArray arrayWithObjects:@1, @2, @3, nil];
   [array objectAtIndex:1];
  • 2.2.多用类型常量,少用#define预处理命令
规范:
//header file
extern NSString *const kNotificationString;

//implementation file
NSString *const  kNotificationString = @"Finish Download";

不规范:
#define kNotificationString @"Finish Download"
  • 2.3.枚举写法
    枚举有多种写法,但是请写成这样(NS_OPTIONS同理):
typedef NS_ENUM(NSInteger, YSPersonGender) {
    YSPersonGenderMale,
    YSPersonGenderFemale
};
  • 2.4适当使用空格
  • property后有空格
  • 内存语义之间有空格
  • 类型(NSArray)之后有空格
  • *和属性名之间无空格
@property (nonatomic, copy, readonly) NSArray *persons;
  • 运算符两侧有空格
规范: a = b + c;
不规范: a=b+c;
  • 2.5适当使用备注
    使用XCode自带的代码注释功能键option + command + /进行注释

    代码注释
  • 2.6对method进行分组
    可以参考我的分组方式,也可自行修改.(但是set&get包括懒加载)请写在最下面

#pragma mark - 生命周期

#pragma mark - 重写

#pragma mark - 初始化

#pragma mark - 方法

#pragma mark - 事件

#pragma mark - 网络请求

#pragma mark - 数据源

#pragma mark - 代理

#pragma mark - Get&Set

3.Xcode

  • 3.1文件管理
  • xcode创建文件夹不要创建虚拟文件夹,应创建物理文件夹,便于查找文件位置(及Xcode里的项目树,和项目文件树结构一致).
    XCode项目树
    项目文件树
  • 请确保所有项目的项目根目录里仅有Podfile + Podfile.lock + Pods\ + projname\ + projname.xcodeproj + projname.xcworkspace 6个文件&文件夹
  • 3.2文件管理详解

    项目树详情
  • 3.2.1YSGeneral:公司内部封装的一些代码按需取用;

  • 3.2.2Class:项目代码主体部分;

    • AppDelegate:AppDelegate及其分类
    • Conteroller:各页面控制器及其分类及其专用View
    • Api:项目所有接口(详情参考4.Api)
    • Model:项目所有模型
    • View:通用不依赖特定ConterollerView.
    • Too:l工具类
  • 3.2.3Extension:非Pods导入的第三方代码

  • 3.2.4Resource:根路径下存放Assets.xcassets + pch + Info.plist
    UseLess下存放ViewController.h .m + Main.storyboard + LaunchScreen.storyboard + main.m

以上目录可以根据功能再进行分级

4.Api

项目中所有Api均已单独模型形式进行封装.Api的写法请如下.BaseApi的代码请参考YSGeneral

#import "BaseApi.h"

@interface YSEditPasswordApi : BaseApi


/**
.h
 修改密码Api
 1.6 修改密码的接口(完成)

 @param verifyCode 验证码(选填)
 @param password 密码
 @param callback 回调
 */
- (void)editPasswordWithVerifyCode:(NSString *)verifyCode
                          password:(NSString *)password
                          callback:(ApiRequestCallBack)callback;


@end

.m

#import "YSEditPasswordApi.h"

@implementation YSEditPasswordApi

- (void)editPasswordWithVerifyCode:(NSString *)verifyCode
                          password:(NSString *)password
                          callback:(ApiRequestCallBack)callback{
    
    // 参数拼接
    self.params[kAPI_NAME] = @"shipinhuiyi.user.editPassword";
    self.params[@"verify_code"] = verifyCode;
    self.params[@"new_password"] = [HttpSign doMD5:password];
    
    // Api调用成功之后的外部回调
    self.callback = callback;
    
    [self doRequestWithSuccessBlock:^(id resultData) {
        // Api调用成功之后的内部回调
        
    }];
    
}

@end

相关文章

  • 盈软iOS代码规范

    0.写在前面 本文中所提到的规范与不规范大部分其实没有明显的优劣之分只是一种偏好,但出于管理统一,以及他人维护成本...

  • iOS 代码规范篇

    iOS 代码规范篇 iOS 代码规范篇

  • iOS Coding Style Guide 代码规范

    iOS Coding Style Guide 代码规范 iOS Coding Style Guide 代码规范

  • 乐乎-代码规范概述

    参考: 1、iOS中书写代码规范35条小建议 2、iOS开发总结之代码规范 3、iOS代码编程规范-根据项目经验汇...

  • iOS 代码规范文档

    iOS 代码规范文档 [toc] 修订 概述 制定目的:制定iOS 编码规范,主要是为了规范公司内部的iOS 代码...

  • iOS -如何让你写的代码更规范

    iOS -如何让你写的代码更规范 iOS -如何让你写的代码更规范

  • 代码之天圆地方

    优雅的写代码轻松的查代码严格的审代码 一、 iOS代码规范检查 新人入场第一件事就是熟悉代码规范iOS代码编程规范...

  • iOS开发总结之代码规范

    iOS开发总结之代码规范

  • iOS知识整理(二)

    OC知识整理 代码规范 iOS 代码规范 #pragma mark - 添加子视图#pragma mark - 添...

  • iOS 代码规范

    iOS规范:仅适用于iOS的代码规范(使用Objective-C语言)。 一.代码应该简洁易懂,逻辑清晰 不要过分...

网友评论

      本文标题:盈软iOS代码规范

      本文链接:https://www.haomeiwen.com/subject/bontzxtx.html