But: fournir des consignes claires pour contribuer a Window Switcher en tant que developpeur Dotnet senior, en restant alignes avec les bonnes pratiques Microsoft.
- Solution:
Window-Switcher.sln - UI:
src/WindowSwitcher/(Avalonia) - Core/lib:
src/WindowSwitcher.Lib/ - Tests:
src/WindowSwitcher.Tests/ - Cible:
.NET 10(net10.0) - MVVM:
CommunityToolkit.Mvvm
- Build:
dotnet build Window-Switcher.sln - Run:
dotnet run --project src/WindowSwitcher/WindowSwitcher.csproj - Tests:
dotnet test src/WindowSwitcher.Tests/WindowSwitcher.Tests.csproj
- Nullability: garder
<Nullable>enable</Nullable>; eviter les suppressions!; utiliserArgumentNullException.ThrowIfNull. - Async: privilegier
async/await; ne jamais bloquer le thread UI; utiliserDispatcher.UIThreadpour les updates UI. - Concurrence: utiliser
CancellationTokensur les boucles longues; liberer les ressources (IDisposable/Dispose). - MVVM: utiliser
ObservableObjectet[ObservableProperty]dans les ViewModels; garder le code-behind minimal. - Config: passer par
ConfigFileAccessorpour lecture/ecriture; eviter l'I/O direct depuis la UI. - Portabilite: isoler le code specifique OS dans
src/WindowSwitcher.Lib/Data/WindowAccess(pas de P/Invoke dans la UI). - Exceptions: fail-fast pour erreurs de programmation; gerer proprement les erreurs attendues (message utilisateur).
- Collections: preferer
IReadOnlyCollectionen entree; eviter les mutations concurrentes.
- Documenter les API publiques de
src/WindowSwitcher.Libavec des commentaires XML.