35 lines
No EOL
2 KiB
Markdown
35 lines
No EOL
2 KiB
Markdown
# Plan de refactorisation du module UniFi Integration
|
|
|
|
## Problème identifié
|
|
|
|
Le fichier `unifi_site.py` est trop volumineux (plus de 4000 lignes) et contient une logique qui mélange deux types d'API différents (Controller et Site Manager). Cela rend le code difficile à maintenir et à faire évoluer.
|
|
|
|
## Approche de refactorisation
|
|
|
|
Nous allons utiliser des mixins pour séparer la logique spécifique à chaque type d'API. Voici les étapes de la refactorisation :
|
|
|
|
1. Créer deux mixins :
|
|
- `UnifiControllerAPIMixin` : pour les fonctionnalités spécifiques à l'API Controller
|
|
- `UnifiSiteManagerAPIMixin` : pour les fonctionnalités spécifiques à l'API Site Manager
|
|
|
|
2. Modifier le modèle `UnifiSite` pour déléguer les appels aux mixins appropriés en fonction du type d'API.
|
|
|
|
3. Déplacer les méthodes spécifiques à chaque type d'API dans les mixins correspondants.
|
|
|
|
## Avantages de cette approche
|
|
|
|
1. **Séparation des préoccupations** : Chaque mixin contient uniquement le code spécifique à un type d'API.
|
|
2. **Réduction de la taille des fichiers** : Le fichier principal devient beaucoup plus petit et gérable.
|
|
3. **Facilité d'extension** : Ajouter un nouveau type d'API nécessite simplement de créer un nouveau mixin.
|
|
4. **Meilleure testabilité** : Les mixins peuvent être testés indépendamment du modèle principal.
|
|
5. **Clarté du code** : Les développeurs peuvent facilement identifier où se trouve l'implémentation d'une fonctionnalité pour un type d'API spécifique.
|
|
|
|
## Implémentation
|
|
|
|
Les fichiers suivants ont été créés ou modifiés :
|
|
|
|
1. `unifi_controller_api_mixin.py` : Contient le mixin pour l'API Controller
|
|
2. `unifi_site_manager_api_mixin.py` : Contient le mixin pour l'API Site Manager
|
|
3. `unifi_site.py` : Modifié pour utiliser les mixins
|
|
|
|
Le modèle `UnifiSite` délègue maintenant les appels aux mixins appropriés en fonction du type d'API, ce qui permet de réduire considérablement la taille du fichier et d'améliorer la maintenabilité du code. |