Objective-C Coding Style

作者: 剑伟大大 | 来源:发表于2015-02-06 11:08 被阅读107次

    随着移动互联网的发展浪潮,更多的开发者都加入了移动开发中来。Objective-c和swift学的飞起(本章只针对oc进行详解),但是写出来的代码简直花样百出,相信大多数coder看到这些代码时,不禁想问一句:“你TM写的什么鬼,what‘s the fxxk”。

    coding style真的很!重!要!不管是企业还是独立开发者都有自己的一套代码规范,良好的代码规范利于别人学习和重构,节省开发时间,提高开发效率,提升“性能”等等等等。Next,我们进入正题。

    PS:下面多人的做法,只是不推荐,并不能说明语法有错误,程序并不会crash

    1、条件判断语句


    情景一:布尔值类型的条件判断

    应该这么干:

    BOOL isSelected;
    if (isSelected) {
        // true, do something
    }
    else {
        // false, do something
    }
    

    有些人会这么干:

    BOOL isSelected;
    if (isSelected == YES) {
        // true, do something
    }
    
    情景二:值比较的条件判断

    应该这么干:

        NSInteger count = 100;
        if (count == 100) {
            
        }
    
    情景三:复杂的条件判断

    应该尽量把if中复杂的条件拆分出来:

        BOOL isObjC = YES;
        BOOL isSwift = NO;
        BOOL isIOSLanguage = isObjC || isSwift;
        
        if (isIOSLanguage) {
            // do something
        }
    

    2、三目运算

    情景一:复杂的三木运算需要拆分

    应该这么干:

        NSInteger x = (a > b) ? c : d;
        NSInteger result = (e > f) : x : y;
    

    不要这么搞:

        NSInteger result = (e > f) ? (a > b ? c : d) : y;
    
    情景二:如果第二个参数返回的对象跟条件判断的对象相等时

    应该这么干:

        result = objectC ?  : swift;
    

    3、switch...case条件语句

    情景一:case分支中有多条语句时需要加{}
    switch (condition) {
        case 1:
            // ...
            break;
        case 2: {
            // 多行
            // Multi-line example using braces
            break;
           }
        case 3:
            // ...
            break;
        default: 
            // ...
            break;
    }
    
    情景二:在不同case分支中有相同的代码块,应合并
    switch (condition) {
        case 1:
        case 2:
            // code executed for values 1 and 2
            break;
        default: 
            // ...
            break;
    }
    
    情景三:如果使用枚举类型,default分支不是必须的
    switch (menuType) {
        case ZOCEnumNone:
            // ...
            break;
        case ZOCEnumValue1:
            // ...
            break;
        case ZOCEnumValue2:
            // ...
            break;
    }
    

    4、枚举类型

    使用NS_ENUM宏来声明枚举,它可以进行类型声明和自动完成,如果不自己实现枚举值,第一个值为0,然后依次增加

    typedef NS_ENUM(NSUInteger, ZOCMachineState) {
        ZOCMachineStateNone,
        ZOCMachineStateIdle,
        ZOCMachineStateRunning,
        ZOCMachineStatePaused
    };
    

    相关文章

      网友评论

        本文标题:Objective-C Coding Style

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