统一项目编码风格之必要性与实现

一、统一代码风格之必要性

不同的人由于编码经验和编码偏好相同,项目中同一个功能的实现代码可能千差万别。往往在一个项目开发过程中,不同的人会负责不同的模块,如果每个人都很随意地按照自己的偏好编写自己部分的代码,不考虑其可阅读性和可维护性,那么如果某天该模块的同学休假或者离职,对于其他接手维护的人来说,将是巨大的灾难。并且让整个项目面临风险。如果项目中代码风格统一,接手人员只需学习了解这一种风格即可触类旁通,剩下的只是产品逻辑;如果项目的N个人N种风格,那么接手人员将学习N种代码风格后,再学习产品逻辑,增加了接手难度。
统一的代码风格有以下几个好处:

  • 让新接手的人易于阅读,快速入手;
  • 让项目更加易于维护;
  • 可以减少一些简单代码的注释;
  • 提高合作效率;

二、统一代码风格之实现

  • 代码分段
    将具有相同或相似功能的代码放在一起,并添加分段标注。在iOS开发中,可以通过如下形式添加分段:

#pragma mark - Private Methods

其中“#pragma mark -”为固定格式,“Private Methods”该分段表示的含义,此处说明该分段中的皆为私有方法。

  • 代码分段,并且指定一定的顺序
    如果代码分段的顺序混乱,也不利于其他同事快速找到相应的方法。指定一定的顺序,形成共识,有利于提高协作效率;
    一般情况,在iOS开发中的一个VC文件中,可以通过以下顺序进行分段:
#pragma mark - Initialize Methods
#pragma mark - Life Cycle
#pragma mark - Super Methods
#pragma mark - Private Methods
#pragma mark - Public Methods
#pragma mark - Event
#pragma mark - <<#Delegate#>>
#pragma mark - Property
#pragma mark - Dealloc
  • 对视图的统一处理
    在iOS开发中,每个页面都不可避免的会有很多的视图操作,页面越复杂,视图操作越多。几乎页面上添加每一个视图操作都有:addView、add
    Constraints,addAction等操作。如果这些视图操作随意放置在不同的位置,对于来维护的人来说,是很难理清响应的逻辑的。此时我们可以把所有视图的相操作都放置在同一个方法中,下面把多个视图的操作都归集放在setupSubViews,setupConstraints,setUpEvent三个方法中。不管有多复杂的页面,在这三个方法中可以迅速找到对应的方法和逻辑,如下代码所示:
- (void)setupSubViews {
      [self addSubview:self.containerView];
      [self addSubview:self.noteImageView];
      [self addSubview:self.topBarView];
      [self addSubview:self.bottomView];
}
- (void)setupConstraints {
     [self.topBarView mas_makeConstraints:^(MASConstraintMaker *make) {
}];
    [self.containerView mas_makeConstraints:^(MASConstraintMaker *make) {
}];

    [self.noteImageView mas_makeConstraints:^(MASConstraintMaker *make) {
}];

   [self.bottomView mas_makeConstraints:^(MASConstraintMaker *make) {
}];
}
- (void)setUpEvent {
/** 恢复按钮 */
[self.bottomView.restoreBtn addTarget:self action:@selector(restoreImage) forControlEvents:UIControlEventTouchUpInside];
/** 旋转90度按钮 */
[self.bottomView.rotationBtn addTarget:self action:@selector(rotationImage) forControlEvents:UIControlEventTouchUpInside];
/** 删除按钮 */
[self.bottomView.deleteBtn addTarget:self action:@selector(deleteImage) forControlEvents:UIControlEventTouchUpInside];
/** 添加图片按钮 */
[self.bottomView.addImageBtn addTarget:self action:@selector(addImage) forControlEvents:UIControlEventTouchUpInside];
}
  • 使用统一的自定义代码块

Xcode是一个很强大的工具,为我们提供了自定义代码块的功能,对于一些常见的方法、协议、或者固定格式写法,我们都可以自定义成代码块,在项目中需要该段代码时,我们键入少量的代码,Xcode即可以自动补全该代码块的内容。统一的自定义代码块,可以让每一个项目成员在要实现同样的功能时,写出的是完全相同的代码风格,有利于不断的形成共识。关于如何自定义代码块,我们将在下一期专门进行说明。

  • 对导入的头文件进行分段

在一个复杂的文件中,导入的头文件也会很多,对头文件进行分段,也会使代码结构很清晰。可按照以下分段进行:

//System
//VC
//Model
//View
//Helper
  • 抽象提取基类

对于View,VC,Model等不同的模块,最好根据项目的需要能提炼出相应的Base基类,把一些不断重用的方法写到基类中,那么其他人要使用该功能的时候,可以直接调用基类中的方法,这也有利于大家写出的代码相对统一。比如UITableViewCell有对应的UITableViewBaseCell,UIViewController有对应的UIBaseVC,model 有对应的BaseModel。

  • 提炼出Category

OC 作为面向对象的语言。Objective-C 中的 Category 就是对装饰模式的一种具体实现。它的主要作用是在不改变原有类的前提下,动态地给这个类添加一些方法。将需要的方法写到Category中供所有项目成员使用,也能使大家的代码风格更加的统一。

  • 统一合理的代码规范

对于代码规范,一定要开发团队进行评审,大家充分的提出建议,经过讨论后形成一份可操作性强、达成共识的有效规范,这样才能得到有效的实施。

  • Code Review

一家开发规范的公司一定会进行code review,那么在code review的过程中,不仅可以团队成员之间进行相互切磋学习,发现业务代码实现中的问题,更重要的是这是一个团队代码风格进行融合的机会。团队leader组织大家定期地进行code review,是对团队负责,对公司负责,对自己负责的表现。

你可能感兴趣的:(统一项目编码风格之必要性与实现)