美文网首页
合理优化解决if、else的问题

合理优化解决if、else的问题

作者: WY_260f | 来源:发表于2019-12-26 16:15 被阅读0次

用魔法数字的缺点

无意义,0、1这样的数字只能表示位置。没有其它的信息。

容易出错,在cell代理方法,高度代理方法,点击代理方法里面要保持一致,容易出错。

不方便修改,如果要修改两个cell的顺序,要修改好几个地方。

下面说一下解决方法,并不是什么高深的东西,有一定开发经验的人应该都懂。对于一个tableview,位置数字肯定是有的,我们要消除数字,那就得找到相应的数据来代替它。这里,主要的场景一般都是一个row对应一种类型的cell,所以类型是固定的,所以我们用一个枚举来定义所有类型的cell。

typedef NS_ENUM(NSInteger, InvestCellType) {

    HomeCellTypeOfficial =0,

    HomeCellTypeWechat,

    HomeCellTypeAlipay,

};

上面是我从项目里直接复制出来的,请忽略名字(取名真是一个痛苦的事【抱头】)。列表的数据一般都是放在一个Array里面,还是以我上面的例子来说明,我有6种类型的model,有些model可能有多个,像上面枚举里面最后那个类型的model就可能有多个。从服务器拉回数据后,我就在vm里面解析好,全放到一个array里面了,就是列表的数据源。下面是我的cellForRow方法:

switch ([self getHomeCellType]) {

        case HomeCellTypeOfficial:{

            InvestOfficialCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"official" forIndexPath:indexPath];

            return cell;

            break;

        }

        case HomeCellTypeWechat:{

            InvestWechatCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"wechat" forIndexPath:indexPath];

            return cell;

            break;

        }

        case HomeCellTypeAlipay:{

            InvestAlipayCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"alipay" forIndexPath:indexPath];

            return cell;

            break;

        }

        default:

            break;

    }

这样的cellForRow方法是不是很简洁。里面的getHomeCellType方法是通过dataArray里面model的类型,拿到对应的cell类型。方法如下:

- (InvestCellType)getHomeCellType {

    InvestCellType type = HomeCellTypeOfficial;

    switch (self.selectIndex) {

        case 0:

            type = HomeCellTypeOfficial;

            break;

         case 1:

            type = HomeCellTypeWechat;

            break;

        case 2:

            type = HomeCellTypeAlipay;

            break;

        default:

            break;

    }

    return type;

}

不是公共代码我们一般不加项目前缀,有点多余的感觉。

相关文章

  • 合理优化解决if、else的问题

    用魔法数字的缺点 无意义,0、1这样的数字只能表示位置。没有其它的信息。 容易出错,在cell代理方法,高度代理方...

  • 2020-12.10--Spark-18(Spark-Core)

    案例分析、回顾与优化组内 区内 排序 聚合未解决的问题:使用reducebykey乱序问题(怎么定义合理分区),...

  • if-else优化问题

    在项目开发中,我们总是不可避免做大量的判断,很多时候,我们的第一反应就是使用if-else进行判断。但是,过多的i...

  • 技术总结 | 策略模式

    问题:如何优化代码中大量的 if/else ? 提前 return。 使用 switch ... case。 使用...

  • Chain of responsibility-责任链模式

    解决问题 它主要解决的问题是“递归、循环”问题或者大量的if-else 问题。通过定义不通的receiver,并在...

  • 代码存在大量的if/else优化方案总结

    过多的else if 会使代码臃肿而简陋,下面是优化方案总结 一、多个else if分支优化 1.Key-valu...

  • if/else优化

    优化 if/else 语句 当逻辑或||时,找到为 true 的分项就停止处理,并返回该分项的值,否则执行完,并返...

  • 优化if else

    引用地址:https://www.jianshu.com/p/4c035c271a10

  • 优化 if/else

    代码中经常有一些 if/else 连环判断,如果是入参判断,我们可以使用 Hibernate-Validator ...

  • Android性能优化-布局优化(三)

    说明 上篇文章Android性能优化-布局优化(一)咱们说过,为了解决布局冗余,合理使用include/megre...

网友评论

      本文标题:合理优化解决if、else的问题

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