Ich habe zwei Methoden mit einer ähnlichen Signatur (ChooseChamfer und ChooseFillet). Diese Methoden haben eine umfangreiche Struktur wenn .. sonst. (Ich brachte eine vereinfachte Version), wo die Methoden aufgerufen werden (CreateChamfer und CreateFillet). Wie kann ich Refactoring-Code in einer einzigen Methode machen?Wie man zwei Methoden umgestaltet?
private void ChooseChamfer(string featureType, double diameter, double distance, string str1, string str2)
{
if (featureType.Contains("F"))
{
CreateChamfer(diameter,
distance,
-double.Parse(str1, System.Globalization.CultureInfo.InvariantCulture),
double.Parse(str2, System.Globalization.CultureInfo.InvariantCulture));
}
else if (featureType.Contains("L"))
{
CreateChamfer(diameter,
distance,
double.Parse(str1, System.Globalization.CultureInfo.InvariantCulture),
-double.Parse(str2, System.Globalization.CultureInfo.InvariantCulture));
}
}
private void ChooseFillet(string featureType, double diameter, double distance, string str1)
{
if (featureType.Contains("F"))
{
CreateFillet(diameter,
distance,
-double.Parse(str1, System.Globalization.CultureInfo.InvariantCulture));
}
else if (featureType.Contains("L"))
{
CreateFillet(diameter,
distance,
double.Parse(str1, System.Globalization.CultureInfo.InvariantCulture));
}
}
private void CreateChamfer(double diameter, double distance, double str1, double str2)
{
//Draw Chamfer
}
private void CreateFillet(double diameter, double distance, double str1)
{
//Draw Fillet
}
Vielen Dank im Voraus.
Ich denke, dass [http://codereview.stackexchange.com/](http://codereview.stackexchange.com/) ist besser Ort für diese Art von Frage – Fabio
Sie könnten mit Reflection ('MethodInfo') aber dann arbeiten Sie sind anfällig für Laufzeitausnahmen. Oder du bewegst den int rückwärts in eine separate Methode. – NtFreX
Haben 'Chamfer' und' Fillet' eine gemeinsame Basisklasse? Wenn so eingeschränkt Generika die Dinge ein wenig vereinfachen könnten. Auch wenn Sie eine große Menge von if-else haben, die auf 'featureType' prüft, können Sie das in ein 'Dictionary' umformulieren, wobei der Wert die Methode ist, die aufgerufen werden soll, oder der' Type' – KMoussa