2017-06-04 1 views
-1

Cette solution me semble être un moyen très paresseux et bon marché de le faire et je me demandais s'il y avait une meilleure façon de faire cela avec un minimum de changement si je souhaite ajouter de nouvelles «compétences» à l'avenir pour ainsi dire.Ajouter une valeur à la propriété de classe spécifique de la liste

Tout ce que j'ai à faire ici est d'ajouter des niveaux spécifiques aux propriétés de la liste, je sais quel index de liste appartient à quel niveau. Exemple: L'indice 0 contient la force, et la défense est l'indice 2. Mais cela pourrait changer dans le futur.

public class SkillLogic 
{ 
    RpgRepository _skillRpgRepository = new RpgRepository(new DatabaseSkillContext()); 

    public List<Skill> ProcessSkills(int strength, int constitution, int defense, int dexterity, int intelligence, int charisma, int willpower, int perception, int luck) 
    { 
     List<Skill> skills = _skillPotionSmashersRepository.GetSkills(); 

     skills[0].Level = strength; 
     skills[1].Level = constitution; 
     skills[2].Level = defense; 
     skills[3].Level = dexterity; 
     skills[4].Level = intelligence; 
     skills[5].Level = charisma; 
     skills[6].Level = willpower; 
     skills[7].Level = perception; 
     skills[8].Level = luck; 

     return skills; 
    } 
} 

Répondre

0

je suggère la création d'un Enum (StatsType peut-être?) Avec des entrées pour la force, constitution, etc. Ensuite, votre code pourrait être plus auto-documenté.

Encore mieux, changez GetSkills pour renvoyer un dictionnaire plutôt qu'une liste - avec la clé du dictionnaire étant de type StatsType.