J'aide à maintenir et à construire sur un assez grand Swing GUI, avec beaucoup d'interactions complexes. Souvent, je me retrouve à la correction des bugs qui sont le résultat de choses s'en impair de membres en raison de certaines condition de course quelque part ailleurs dans le code.
Comme le code de base est grande, je l'ai trouvé il est devenu de moins en moins cohérente sur la spécification au moyen de documents qui ont des méthodes de filetage restrictions: le plus souvent, les méthodes qui doivent être exécutées sur la Balançoire (HAE). De même, il serait utile de connaître et de fournir statique de la conscience dans laquelle (de notre coutume) les auditeurs sont informés sur l'EDT par la spécification.
Alors il est venu à moi, que ce devrait être quelque chose qui pourrait être facilement appliquée à l'aide d'annotations. Lo et voici, il existe au moins un outil d'analyse statique, CheckThread, qui utilise les annotations pour accomplir cette tâche. Il semble pour vous permettre de déclarer une méthode pour être confiné à un thread spécifique (le plus souvent le HAE), et le drapeau des méthodes qui tentent d'appeler cette méthode sans se déclarer comme confiné à ce thread.
Ainsi, sur la surface, cela semble juste comme une faible douleur, énorme gain de plus de la source et le cycle de production. Mes questions sont les suivantes:
- Existe-il des histoires de réussite pour les personnes utilisant CheckThread ou bibliothèques similaires à appliquer le filetage des contraintes? Toutes les histoires d'échec? Pourquoi réussite/échec?
- Est-ce bien dans la théorie? Y sont théoriques inconvénients?
- Est-ce une bonne pratique? Est-il utile? Ce type de valeur est-il livré?
- Si cela fonctionne dans la pratique, ce sont de bons outils pour soutenir cela? Je viens de trouver CheckThread mais admettre que je ne suis pas entièrement sûr de ce que je suis à la recherche pour trouver d'autres outils qui font la même chose.
Je sais pas si c'est bon pour nous, cela dépend de notre scénario. Mais je n'ai jamais entendu parler de personnes utilisant quelque chose comme ceci dans la pratique, et pour être honnête, il ne semble pas avoir pris beaucoup de certains la navigation générale. Alors je me demandais pourquoi.