代码中赋批量固定值时的数据结构问题

开发中遇到需写入代码中一些批量的数据时,数据结构设计不好,往往会造成维护问题。

如下:


1.用多个数组方式写入一些相互有关系的数据就是很不明智的。下面代码中3个数组中相同序号的对象是一一对应的。后期调整顺序时就很麻烦,三个数组都要改。

        NSArray * arrayRoleNames =@[@"全部职业",@"德鲁伊",@"萨满祭司",@"术士",@"牧师",@"法师",@"潜行者",@"战士",@"圣骑士",@"猎人"];

        NSArray * arrayRoleTypes =@[@(RoleTypeAllRole),@(RoleTypeDruid),@(RoleTypeShaman),@(RoleTypeWarlock),@(RoleTypePriest),@(RoleTypeMage),@(RoleTypeRogue),@(RoleTypeWarrior),@(RoleTypePaladin),@(RoleTypeHunter)];

        NSArray * arrayRoleImages =@[[UIImageimageNamed:@"icon_deck_menu_all"],[UIImageimageNamed:@"icon_deck_menu_dly"],[UIImageimageNamed:@"icon_deck_menu_sm"],[UIImageimageNamed:@"icon_deck_menu_ss"],[UIImageimageNamed:@"icon_deck_menu_ms"],[UIImageimageNamed:@"icon_deck_menu_fs"],[UIImageimageNamed:@"icon_deck_menu_dz"],[UIImageimageNamed:@"icon_deck_menu_zs"],[UIImageimageNamed:@"icon_deck_menu_qs"],[UIImageimageNamed:@"icon_deck_menu_lr"]];

        roleItems = [[NSMutableArrayalloc]init];

        [arrayRoleNames enumerateObjectsUsingBlock:^(NSString_Nonnull obj,NSUInteger idx,BOOL *_Nonnull stop) {

            RoleItem * item = [RoleItemnew];

            item.roleName = obj;

            item.roleType = [[arrayRoleTypesobjectAtIndex:idx]integerValue];

            item.roleIconImage = [arrayRoleImagesobjectAtIndex:idx];

            [roleItemsaddObject:item];

        }];


2.上面代码应该改为下面代码,这样就破除了数据间的耦合性,提高可维护性

RoleItem * roleAll = [[RoleItemalloc]initWithName:@"全部职业"imageIcon:[UIImageimageNamed:@"icon_deck_menu_all"]roleType:RoleTypeAllRole];

    RoleItem * roleDruid = [[RoleItemalloc]initWithName:@"德鲁伊"imageIcon:[UIImageimageNamed:@"icon_deck_menu_dly"]roleType:RoleTypeDruid];

    RoleItem * roleShaman = [[RoleItemalloc]initWithName:@"萨满祭司"imageIcon:[UIImageimageNamed:@"icon_deck_menu_sm"]roleType:RoleTypeShaman];

    RoleItem * roleWarlock = [[RoleItemalloc]initWithName:@"术士"imageIcon:[UIImageimageNamed:@"icon_deck_menu_ss"]roleType:RoleTypeWarlock];

    RoleItem * rolePriest = [[RoleItemalloc]initWithName:@"牧师"imageIcon:[UIImageimageNamed:@"icon_deck_menu_ms"]roleType:RoleTypePriest];

    RoleItem * roleMage = [[RoleItemalloc]initWithName:@"法师"imageIcon:[UIImageimageNamed:@"icon_deck_menu_fs"]roleType:RoleTypeMage];

    RoleItem * roleRogue = [[RoleItemalloc]initWithName:@"潜行者"imageIcon:[UIImageimageNamed:@"icon_deck_menu_dz"]roleType:RoleTypeRogue];

    RoleItem * roleWarrior = [[RoleItemalloc]initWithName:@"战士"imageIcon:[UIImageimageNamed:@"icon_deck_menu_zs"]roleType:RoleTypeWarrior];

    RoleItem * rolePaladin = [[RoleItemalloc]initWithName:@"圣骑士"imageIcon:[UIImageimageNamed:@"icon_deck_menu_qs"]roleType:RoleTypePaladin];

    RoleItem * roleHunter = [[RoleItemalloc]initWithName:@"猎人"imageIcon:[UIImageimageNamed:@"icon_deck_menu_lr"]roleType:RoleTypeHunter];

    self.roleItems =@[roleAll,roleDruid,roleShaman,roleWarlock,rolePriest,roleMage,roleRogue,roleWarrior,rolePaladin,roleHunter];


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值