代碼中賦批量固定值時的數據結構問題

開發中遇到需寫入代碼中一些批量的數據時,數據結構設計不好,往往會造成維護問題。

如下:


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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章