Wie mache ich diesen Code DRY?

8

Sagen wir, wir haben diese Checkboxen:

  • FooCheckBox
  • BarCheckBox
  • BazCheckBox

Und diese Methoden:

  • Foo
  • Bar
  • Baz

Ich möchte jede Methode nur aufrufen, wenn das entsprechende Kontrollkästchen aktiviert ist. Der Code könnte so aussehen:

%Vor%

Betrachten Sie nun, dass Sie statt 3 Checkboxen und 3 Methoden viel mehr haben. Wie würden Sie den obigen Code umschreiben, um ihn DRY zu machen?

    
david.s 23.06.2012, 21:56
quelle

5 Antworten

7

Ich würde sagen, für den Fall, den Sie vorgestellt haben, lassen Sie es so wie es ist; Sie möchten nicht übermäßig abstrahieren, ohne einen guten Grund zu haben, da es eine Code-Basis weniger wartbar machen kann. Natürlich spielt der Kontext eine Rolle und es ist letztlich ein Urteilsspruch.

Das heißt, hier ist, wie ich das angehen würde. Erstellen Sie eine Auflistung, in der jedes Element sowohl das Steuerelement als auch den Aktionsdelegaten enthält. Führen Sie dann eine Schleife durch und führen Sie die Logik für jedes Element aus.

%Vor%

Oder (möglicherweise?) besser mit Linq:

%Vor%     
McGarnagle 23.06.2012, 22:04
quelle
6

Sie können ein Wörterbuch verwenden, um mit den Aktionen fortzufahren, die sich auf die Kontrollkästchen beziehen. Dann könnten Sie Folgendes tun:

%Vor%     
MrWuf 23.06.2012 22:02
quelle
4

der Einfachheit halber würde ich mit

gehen %Vor%

Aber Sie könnten etwas mit dem Nachrichtenteil machen, wenn es so einfach ist, und ich könnte je nach lokalem Kontext eine Fehlerüberprüfung einwerfen.

    
Adam Straughan 23.06.2012 22:13
quelle
2

Es könnte folgendermaßen gemacht werden:

%Vor%

Aber ich denke, dass manchmal nicht sehr trocken ist nur in Ordnung.

    
ie. 23.06.2012 22:07
quelle
0

Ich würde ein Dictionary mit <CheckBox, Func> erstellen und jeden Wert durchlaufen:

%Vor%     
Diamondo25 23.06.2012 22:07
quelle

Tags und Links