Ma mission est de refactoriser une instruction de commutateur qui a été mal écrit (il fait pointer la complexité cyclomatic). En bref, il existe une classe qui analyse un fichier pour différentes valeurs.Refactoring déclaration de commutateur pour les données à différents types de données
class foo
{
//a sampling of the fields. Each have their appropriate property
private string _name;
private short _location;
private int _lineNumber;
private List<string> _siblings;
internal foo (StreamReader reader)
{
_siblings = new List<string>()
while (!reader.EndofFile)
{
switch (reader.ReadLine())
{
case "Name":
_name = reader.ReadLine();
break;
case "Location":
_location = short.Parse(reader.ReadLine());
break;
case "Line Number":
_lineNumber = int.Parse(reader.ReadLine());
break;
case "Brother":
case "Sister":
_siblings.Add(reader.ReadLine());
break;
//etc
}
}
}
//Other methods and such
}
J'ai lu sur le sujet et alors qu'il semble y avoir beaucoup d'aide, tout semble pointer au modèle de conception de la stratégie, qui (je crois) serait exagéré mon problème. Dans mon projet, il y a plusieurs classes comme ça, avec certaines d'entre elles ayant plus de 25 instructions de cas (donc bravo à ceux qui peuvent avoir une idée et une classe d'interface ou abstraite)
J'ai pensé à utiliser un Dictionary<String, TValue>
comme décrit par John Sonmez, mais alors que serait TValue?
Toute aide serait grandement apprécié.
Je pense que vous avez peut-être mal compris moi. Si la stratégie est la meilleure façon, alors je vais l'utiliser! –
Cette implémentation est de toute façon stratégique mais l'usine est implémentée en tant que dictionnaire. – Aliostad
De wiki: "L'exigence essentielle dans le langage de programmation est la possibilité de stocker une référence à un code dans une structure de données et de le récupérer." C'est ce que je fais ici. – Aliostad