美文网首页
统一项目编码风格之必要性与实现

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

作者: sculg | 来源:发表于2019-01-09 21:20 被阅读12次

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

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

    相关文章

      网友评论

          本文标题:统一项目编码风格之必要性与实现

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