ISSUES.adoc 2.44 KB
Newer Older
sunye's avatar
sunye committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
Une grande partie des problèmes à résoudre durant le projet sont listés ici.
Ils ne sont triés ni par niveau de difficulté, ni par priorité :
c'est à vous de définir tout cela !


.Module Core
* Compléter l'interface `GTDServer`. 
* Décomposer l'interface `GTDServer` en plusieurs pour respecter la bonne pratique "Ségrégation d'interfaces"

.Module Main

. Ajoutez une classe _Façade_ au module, qui servira de point d'entrée, permettant d'accéder (au moins) aux projets et contextes existants
. La classe _Façade_ doit aussi servir de _Fabrique_ des classes du projet
. Vérifiez la bonne mise en oeuvre des associations bidirectionnelles suivantes :
.. `Projet -- User`
.. `Projet -- Task`
.. `Task -- Context`

. Vérifier la bonne mise en oeuvre des associations suivantes:
.. `Task -- Tag`
.. `Task -- User`
.. `User -- Idea`
.. `Project -- Project`
.. `Projet -- User`

.Module Thrift

. Complétez le fichier `gtd-server-service.thrift` pour que le service `GTDServerService` propose les mêmes méthodes que l'interface `GTDSrver`

.Module RMI

. Déplacez ici tout le code en relation avec RMI, principalement la classe `ReactorRMI`
. Améliorez la classe `ReactorRMI` pour la faire utiliser une `BlockingQueue`

.Module Persistent

. Assurez-vous qu'après la modification des autres modules, il est toujours possible de compiler ce module.

.Module GUI

. Assurez-vous qu'après la modification des autres modules, il est toujours possible de compiler ce module.

.Projet
. Traduisez le code en anglais

. Améliorez l'encapsulation des objets: tous les champs des classes doivent être privés !

. Modifiez le code pour respecter les conventions de codage Java.

. Ajoutez des tests unitaires pour bien vérifier la mise en oeuvre des méthodes.

. Utilisez la _programmation défensive_ pour vérifier les arguments des méthodes publiques.

. Utilisez la _programmation assertive_ pour détecter les _erreurs internes_ 
(comportements inattendus) des méthodes privées.

. Utilisez des *exceptions* pour traiter les _erreurs clients_ (comportements attendus).

. Pour gérer les dates utilisez le paquetage `java.time`, disponible depuis Java 8 et qui fournit
  des outils très puissants pour la gestion des dates.

sunye's avatar
sunye committed
62
63
. Améliorez la documentation des interfaces: assurez-vous que chaque méthode est bien décrite par les commentaires Javadoc

sunye's avatar
sunye committed
64
65
66
.Bonus
. Migrez le projet de Maven à Gradle
. Utilisez les modules pour rendre les classes internes inaccessibles.
67