SAÉ S2 · JavaFX / Java
Une application de bureau développée en JavaFX qui apparie des étudiants en calculant des scores d'affinité basés sur des critères pondérés et personnalisables.
Algorithme calculant un score d’affinité pondéré par des profils et critères personnalisés.
Pattern MVC, injection de dépendances et vision SOLID pour garder le code lisible.
Tests unitaires paramétrés, refactoring constant et vérification des chemins critiques.
Respecter l'architecture MVC définie collectivement a imposé une discipline : chaque membre savait où écrire quoi. Quand une fonctionnalité déviait de cette structure, je la signalais pour qu'on corrige avant que ça se propage. J'ai appris que l'organisation du code est aussi une forme de communication.
Les tests unitaires paramétrés ont servi de contrat partagé : quand un test passait, tout le monde savait que la fonctionnalité était validée, sans avoir à relire le code de l'autre. Cette approche m'a appris que les tests ne sont pas qu'un outil technique — ils facilitent aussi la coordination.
L'algorithme de pondération était complexe à expliquer oralement. J'ai pris l'habitude de documenter le raisonnement (pourquoi ce calcul, quels cas limites) pour que les autres membres puissent le comprendre et l'étendre sans me demander à chaque fois.
Appliquer le pattern MVC sur un vrai projet m'a montré concrètement pourquoi séparer la logique métier de l'interface simplifie les tests et facilite les modifications. L'algorithme de pondération a pu être testé sans ouvrir JavaFX.
Le système de properties et d'observable values de JavaFX n'est pas intuitif au départ — j'ai mis du temps à comprendre comment synchroniser l'état du modèle avec l'affichage sans écrire de code spaghetti. La modélisation d'un algorithme de matching flexible a aussi demandé plusieurs itérations.
Je commencerais par écrire les tests de l'algorithme de matching avant de toucher à l'interface (approche TDD). Cela m'aurait évité de découvrir des cas limites tardivement. Je passerais aussi plus de temps à définir le modèle de données avant de concevoir la vue.