Voici une question générique. Je ne suis pas à la recherche de la meilleure réponse, j'aimerais simplement que vous exprimiez vos pratiques préférées.
Je veux implémenter un protocole réseau en Java (mais c'est une question assez générale, j'ai rencontré les mêmes problèmes en C++), ce n'est pas la première fois, car j'ai déjà fait cela auparavant. Mais je pense qu'il me manque une bonne façon de l'implémenter. En fait, il s'agit généralement d'échanger des messages texte et quelques tampons d'octets entre les hôtes, de stocker l'état et d'attendre l'arrivée du message suivant. Le problème est que je me retrouve généralement avec un tas de switch et d'instructions if plus ou moins complexes qui réagissent à différents statuts/messages. Le tout devient généralement compliqué et difficile à gérer. Sans parler du fait que parfois ce qui en ressort comporte des "angles morts", c'est-à-dire des états du protocole qui n'ont pas été couverts et qui se comportent de manière imprévisible. J'ai essayé d'écrire quelques classes de machine d'état, qui se chargent de vérifier les états de début et de fin pour chaque action de manière plus ou moins intelligente. Cela rend la programmation du protocole très compliquée car je dois écrire des lignes et des lignes de code pour couvrir toutes les situations possibles. Ce que je voudrais, c'est quelque chose comme un bon modèle, ou une meilleure pratique qui est utilisé dans la programmation de protocoles complexes, facile à maintenir et à étendre et très lisible.
Quelles sont vos suggestions ?