[原创]iOS 简化冗余代码

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

   

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。