博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS 简化冗余代码
阅读量:4486 次
发布时间:2019-06-08

本文共 3442 字,大约阅读时间需要 11 分钟。

  正在给深圳某家智能家居开发iPad版本,在已经存在的iPhone版上修改,该app的界面采用的是xib。xib相比代码来写界面,快速高效,但是可维护性和可读性太差。言归正传,看到这些代码后,我的心情很复杂。

  任何一门编程领域,任何人都可以参与,就拿iOS开发来说,有的人写出的代码是能执行,但不仅仅要求是能执行,当项目的功能不断增加时,不整洁的编写风格会让人看着想吐,就不用谈什么可维护性了,简直是一团糟。

else if (devTypeID==13||devTypeID==14)    {        XRDimmingViewController *dimmingVC;        if (iphone6P)        {            dimmingVC = [[XRDimmingViewController alloc]initWithNibName:@"XRDimmingViewController-6P" bundle:nil];        }        else if (iphone6)        {            dimmingVC = [[XRDimmingViewController alloc]initWithNibName:@"XRDimmingViewController-6" bundle:nil];        }        else        {            dimmingVC = [[XRDimmingViewController alloc]initWithNibName:@"XRDimmingViewController" bundle:nil];        }        dimmingVC.devTypeID = devTypeID;        dimmingVC.devID = devID;        [self.navigationController pushViewController:dimmingVC animated:YES];        return;    }    else if (devTypeID==15)    {        XRColorViewController *colorVC = [[XRColorViewController alloc] init];        colorVC.devTypeID = devTypeID;        colorVC.devID = devID;        [self.navigationController pushViewController:colorVC animated:YES];        return;    }    else if (devTypeID>=31&&devTypeID<=34)    {        XRCurtainViewController *curtainVC;        if(iphone6)        {            curtainVC = [[XRCurtainViewController alloc]initWithNibName:@"XRCurtainViewController-6" bundle:nil];        }        else if (iphone6P)        {            curtainVC = [[XRCurtainViewController alloc]initWithNibName:@"XRCurtainViewController-6P" bundle:nil];                    }        else        {            curtainVC = [[XRCurtainViewController alloc]initWithNibName:@"XRCurtainViewController" bundle:nil];                    }        curtainVC.deviceType = devTypeID;        curtainVC.curtainDeviceID = devID;        [self.navigationController pushViewController:curtainVC animated:YES];        return;    }

   完全可以写一个公用方法判断设备类型来加载对应的xib。

- (NSString *)selectViewControllerXibName:(NSString *)className {    NSString *str;    if (iPhone6p) {        str = [className stringByAppendingString:@"-6p"];    } else if (iPhone6) {        str = [className stringByAppendingString:@"-6"];    } else {        str = className;    }    return str;}

   比如下面的这段代码就可以精简了,让程序的逻辑清晰

// 精简前: else if (devTypeID==13||devTypeID==14)    {        XRDimmingViewController *dimmingVC;        if (iphone6P)        {            dimmingVC = [[XRDimmingViewController alloc]initWithNibName:@"XRDimmingViewController-6P" bundle:nil];        }        else if (iphone6)        {            dimmingVC = [[XRDimmingViewController alloc]initWithNibName:@"XRDimmingViewController-6" bundle:nil];        }        else        {            dimmingVC = [[XRDimmingViewController alloc]initWithNibName:@"XRDimmingViewController" bundle:nil];        }        dimmingVC.devTypeID = devTypeID;        dimmingVC.devID = devID;        [self.navigationController pushViewController:dimmingVC animated:YES];        return;    }

 

// 精简后:else if (devTypeID==13||devTypeID==14){    XRDimmingViewController *dimmingVC = [[XRDimmingViewController alloc]initWithNibName:[self selectViewControllerXibName:NSStringFromClass([XRDimmingViewController class])] bundle:nil];    dimmingVC.devTypeID = devTypeID;    dimmingVC.devID = devID;    [self.navigationController pushViewController:dimmingVC animated:YES];    return;}

   

转载于:https://www.cnblogs.com/sunminmin/p/4451992.html

你可能感兴趣的文章
矩阵乘法-洛谷P2233 [HNOI2002] 公交车路线
查看>>
四个排名函数(row_number、rank、dense_rank和ntile)的比较
查看>>
【Unity--Apwork框架】AOP编程--拦截,用于缓存和异常处理(Unity框架的拦截注入-Interception)...
查看>>
面向对象(接口 ,多态)
查看>>
superset 0.18.4安装
查看>>
断点调试 WebUploader获取文件上传成功路径问题
查看>>
XAMPP 启动mysql报错 InnoDB: Error: could not open single-table tablespace file……
查看>>
什么是 Event Loop?
查看>>
SPOJ-Matrices with XOR property,暴力打表!
查看>>
Joomla学习总结
查看>>
单件模式
查看>>
安卓电量优化之JobScheduler使用介绍
查看>>
网站分析指标
查看>>
[bzoj4766] 文艺计算姬 (矩阵树定理+二分图)
查看>>
给postfix设置黑名单
查看>>
开源日志系统比较
查看>>
char *直接赋值和strcpy之间什么区别
查看>>
【转】 iOS Provisioning Profile(Certificate)与Code Signing详解
查看>>
python中string.casefold和string.lower区别
查看>>
HTML(XHTML)基础知识(五)——【table】
查看>>