2 Stimmen

Code refactoring c# Frage um mehrere if-Anweisungen, die die gleiche Prüfung durchführen

Ich habe eine Methode, die eine Menge von if-Anweisungen, die ein bisschen dumm scheint, obwohl ich nicht sicher bin, wie der Code zu verbessern.

Hier ist ein Beispiel. Diese Logik war in der Ansicht, die jetzt in der Steuerung ist, die weit besser ist, aber gibt es etwas, das ich vermisse, vielleicht ein Design-Muster, das mich stoppt, gegen panelCount < NumberOfPanelsToShow und Handhabung der panelCount jede Bedingung zu überprüfen? Vielleicht nicht, fühlt sich einfach hässlich an!

Vielen Dank!

if (model.Train && panelCount < NumberOfPanelsToShow)
{
    panelTypeList.Add(TheType.Train);
    panelCount++;
}
if (model.Car && panelCount < NumberOfPanelsToShow)
{
    panelTypeList.Add(TheType.Car);
    panelCount++;
}
if (model.Hotel && panelCount < NumberOfPanelsToShow)
{
    panelTypeList.Add(TheType.Hotel);
    panelCount++;
}
...

0voto

Fadrian Sudaman Punkte 6353

Dont haben VS gerade jetzt zu testen, den Code zu kompilieren, aber dies sollte die Logik zu vermitteln. Sie können die Array-Liste mit so vielen der Typen aufbauen, ohne die Testlogik mit großen if-else- oder switch-Anweisungen zu wiederholen.

    TheType[] typesWithPanel = new TheType[] { TheType.Train, TheType.Car, TheType.Hotel};
    if (typesWithPanel.Contains(model.ModelType) && panelCount < NumberOfPanelsToShow)
    {
        panelTypeList.Add(model.ModelType);
        panelCount++;
    }

0voto

Eben Roux Punkte 12662

Sie können sich jederzeit das Spezifikationsmuster ansehen. Ziemlich praktisch für boolesche Logik:

public interface ISpecification<T>
{
    public bool IsSatisfiedBy(T candidate);
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X