SettingsRecipe

Prof. Dr. Robin Nunkesser

Agent-generated Example: Settings

Verwendete Instructions

  • .github/copilot-instructions.md
  • .github/instructions/artifacts.instructions.md
  • .github/instructions/artifacts-consumers-education.instructions.md
  • .github/instructions/slides.instructions.md
  • agent-workbench/prompts/recurring/agent-generated-education-example.md

Prompt

Erstelle ein agent-generated example für settings (MAUI, fortgeschrittene Studierende).
Feature-Scope: minimal (z.B. Todo-Liste). Wende MVVM mit CommunityToolkit.Mvvm und Unit Tests mit MSTest an.
Entscheide anhand der Architektur-Entscheidungstabelle aus den Instructions, welche weiteren Muster (Core-Projekt, Architekturschichten) das Konzept rechtfertigt — verwende sie, wenn dieselbe Komplexität in einem produktiven Einsatz diese Strukturen erfordern würde.
Lies zuerst die Instructions, ermittle den Foliensatz, dokumentiere Instructions + Prompt dort, vergleiche mit manuellem Beispiel, verifiziere MacCatalyst Build mit workaround zum mismatch des workloads mit der xcode version.

Architekturentscheidung

Aspekt Entscheidung Begründung
Feature-Scope Minimal Eine persistierte Texteinstellung reicht für Preferences
MVVM Ja Binding und Commands sind zentral für das Beispiel
Unit Tests Ja (MSTest) Save/Load/Reset-Logik ist ohne UI testbar
Core-Projekt + Interfaces Nein Keine Persistenzschicht im Enterprise-Sinn, nur Preferences-Zugriff
Architektur-Schichten Nein Für dieses Demoziel nicht erforderlich

Ergebnis (agent-generated)

  • CommunityToolkit.Mvvm im neuen Projekt SettingsRecipe.ViewModels
  • ISettingsStore abstrahiert den Settings-Zugriff
  • MauiPreferencesSettingsStore kapselt Preferences
  • Commands Load, Save, Reset im ViewModel
  • DI für ViewModel, Page, Store, AppShell und App
  • MacCatalyst-Workaround gesetzt: ValidateXcodeVersion=false
  • MSTest-Projekt SettingsRecipe.Tests mit 4 Tests

Vergleich: manuell vs. agent-generated

Kriterium Manuelles Beispiel Agent-generated Beispiel
Binding-Ziel direkte statische Settings-Klasse testbares ViewModel
Property Change manuelles INotifyPropertyChanged [ObservableProperty]
Save/Load/Reset implizit über Setter explizite Commands
Testbarkeit kaum 4 Tests gegen ViewModel + Store-Abstraktion
DI nein ja

Fazit: Die agent-generated Variante ist didaktisch klarer, besser testbar und für fortgeschrittene Studierende als Ersatz des manuellen Settings-Beispiels geeignet.

Live-Coding

Repository

Verifikation

  • Tests: dotnet test SettingsRecipe.Tests/SettingsRecipe.Tests.csproj → 4/4 erfolgreich
  • MacCatalyst-Build: dotnet build SettingsRecipe/SettingsRecipe.csproj -f net10.0-maccatalyst → erfolgreich