码迷,mamicode.com
首页 > 移动开发 > 详细

[原创]iOS 简化冗余代码

时间:2015-02-04 18:10:47      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:

  正在给深圳某家智能家居开发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;
}

   

[原创]iOS 简化冗余代码

标签:

原文地址:http://www.cnblogs.com/sunmm/p/4272732.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!