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

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

如下:

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];

    原文作者:骑士周游问题
    原文地址: https://blog.csdn.net/hypercode/article/details/68489476
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞