Ich habe die folgende einfache Funktion:Refactoring einer Schaltfläche Aktivieren/Deaktivieren Umschaltfunktion
private void EnableDisable941ScheduleBButton()
{
if (this._uosDepositorFrequency.Value != null)
this._btnScheduleB.Enabled = ((int)this._uosDepositorFrequency.Value == 0);
}
Es ist ein Mitglied einer Winform Klasse, die ich versuche, in eine passive Ansicht und Moderator zu spalten. Es ist offensichtlich, dass Business-Logik mit UI-Verkabelung verwickelt ist. Ich bin mir einfach nicht sicher, wie ich sie am besten trennen könnte.
Um einen kleinen Kontext zu geben, wird die Funktion von drei Stellen im Formular aufgerufen. _uosDepositorFrequency ist eine Radiobutton-Gruppe mit nur zwei Tasten.
Irgendwelche Ideen?
Update:
Ok, vielleicht ist es nicht so offensichtlich, wie ich dachte. Die Geschäftsregel besagt, dass, wenn ein Arbeitgeber halbwöchentliche Einzahlungen tätigt (_uosDepositorFrequency.Value = 0), sie ein Schedule B Formular ausfüllen müssen.
Haben Sie wirklich alle Geschäftsregeln aus der UI-Ebene verschieben müssen? Dies bringt normalerweise zusätzliche Komplexität mit sich und manchmal lohnt es sich, mit einer gewissen Logik zu leben (besonders Logik der Art, die Sie zeigen ...) –
Nun, der Grund, warum ich die Geschäftsregeln getrennt habe, ist, weil das Formular sein wird ersetzt, aber die Regeln bleiben erhalten. –
Fair genug. Ich gab Ihnen eine Option in der Antwort unten. Persönlich würde ich es jedoch so lassen, wie es ist, und es nur für die Person kommentieren, die den Ersatz macht; im Allgemeinen macht es nur Sinn, wenn Sie die Geschäftsregeln zwischen mehreren Benutzeroberflächen teilen ... –