- Datei:
DialogHelper.cs(neu erstellt) - Ziel: Elimination von Duplikationen bei Dialogen
- Umfang:
- 6 generische Methoden (ShowInfo, ShowWarning, ShowError, ShowConfirm)
- 11 spezialisierte Methoden für häufig verwendete Dialoge
- Alle
MessageBox.Show()-Aufrufe zentralisiert
Betroffene Dateien aktualisiert:
- ✅
MainWindow.xaml.cs: 2 MessageBox-Aufrufe → DialogHelper - ✅
ConfigurationWindow.xaml.cs: 5 MessageBox-Aufrufe → DialogHelper - ✅
AddProcessesWindow.xaml.cs: 4 MessageBox-Aufrufe → DialogHelper
Resultat: 17 MessageBox-Duplikationen eliminiert, einheitliche Fehlerbehandlung
- Datei:
MonitoredProgramExtensions.cs(neu erstellt) - Extension Methods:
FindByProcessName(): Case-insensitives Finden von ProgrammenExistsByProcessName(): Prüfung auf Existenz
Betroffene Dateien aktualisiert:
- ✅
MainWindow.xaml.cs: 2 FirstOrDefault-Muster →FindByProcessName() - ✅
AddProcessesWindow.xaml.cs: 1 Any-Muster →ExistsByProcessName()
Resultat: Wiederverwendbare, wartbare Process-Lookup-Logik
- ❌
ProcessStartWindow.xaml(gelöscht) - ❌
ProcessStartWindow.xaml.cs(gelöscht) - Grund: Funktionalität in
ConfigurationWindowkonsolidiert (StartCommand-Bearbeitung)
| Kategorie | Vorher | Nachher | Reduktion |
|---|---|---|---|
| MessageBox-Aufrufe | 11 verstreut | 0 direkt, 1 zentral | 100% |
| Process-Lookup-Muster | 3 Duplikate | 1 Extension-Methode | 100% |
| Redundante Fenster | 1 extra | 0 | 100% |
| Code-Zeilen (direkt) | ~15 Zeilen Duplikation | Eliminiert | - |
TaskPilot → D:\github\VisualStudio\TaskPilot\bin\Debug\net8.0-windows\TaskPilot.dll
Der Buildvorgang wurde erfolgreich ausgef├╝hrt.
0 Warnung(en)
0 Fehler
- Single Responsibility Principle: DialogHelper konzentriert alle UI-Dialoge
- DRY (Don't Repeat Yourself): Extension-Methoden für häufige Lookups
- Wartbarkeit: Zentralisierte Änderungen an Dialog-Meldungen
- Performance: Keine zusätzlichen Allokationen durch Inline-Lambdas
- Typsicherheit: Generische Extension-Methoden
- Grund: Typengebunden (ConfigurableProcess vs. SelectableProcess)
- Refactoring-Aufwand: Hoch (generische Schnittstelle erforderlich)
- Auswirkung: Gering (lokalisierte Duplikation)
- Status: Akzeptiert für diese Phase
- Filter-Logik in gemeinsame Basis-Klasse extrahieren
- Weitere spezialisierte Dialoge hinzufügen bei Bedarf
- Code-Coverage für Dialog-Szenarios prüfen