java efficace guide de programmation resume table des

publicité
JAVA EFFICACE
GUIDE DE PROGRAMMATION
JOSBUA BLOCH
RESUME
Ce guide, écrit par un expert de Sun Microsystems, présente cinquante-sept
règles de programmation
concourant à l'écriture de programmes efficaces pour la plateforme java. Fruit de
l'expérience des créateurs de java et des défis de programmation relevés au
quotidien, chaque règle illustre divers aspects du langage et de ses difficultés au
moyen de conseils, recommandations - ce qu'il faut faire; ce qu'il ne faut
pas faire - et d'exemples détaillés: son bon usage idiomatique, ses subtilités et
ses pièges,ses patterns et antipatterns. exception. »
Excédant la seule programmation java, ces règles serviront de viatique pour la
Programmation objet en
général et la production de code clair, correct, efficace, robuste et réutilisable.
Les bibliothèques java (java. lang, java. Util et dans une moindre mesure java. io)
sont également abordées,
ainsi que la sérialisation.
«J'aurais voulu avoir ce livre il y a dix ans. Certains peuvent penser que je n'ai besoin d'aucun livre sur Java, mais celui-ci fait. »
TABLE DES MATIERES
Remerciements
XI
Avant-propos
XIII
Préface
XV
Chapitre 1 Présentation
1
Chapitre 2 Création et destruction d'objets
5
1.
2.
3.
4.
5.
6.
Privilégier des méthodes de fabrique statiques aux constructeurs
Appliquer la propriété du singleton avec un constructeur privé
Empêcher l'instanciation avec un constructeur privé
Empêcher la duplication d'objets
Eliminer les références d'objets obsolètes
Eviter les finaliseurs
Chapitre 3 Méthodes communes à tous les objets
7.
8.
9.
10.
11.
Obéir au contrat général lors d'une redéfinition de la méthode equals
Toujours redéfinir hashCode lorsque equals est redéfini
Toujours redéfinir toString
Redéfinir judicieusement clone
Envisager l'implémentation de Comparable
Chapitre 4 Classes et Interfaces
5
10
12
14
18
21
25
25
36
42
45
54
59
12.
Restreindre l'accès des classes et de leurs membres
59
13.
14.
15.
16.
17.
Favoriser l'immuabilité
Préférer la composition à l'héritage
Prévoir et documenter l'héritage ou bien l'interdire
Préférer les interfaces aux classes abstraites
N'utiliser les interfaces que pour définir les types
63
71
78
83
88
17.
18.
N'utiliser les interfaces que pour définir les types
Favoriser les classes imbriquées statiques
Chapitre 5 Equivalents pour constructions du langage C
19.
20.
21.
22.
Remplacer les structures par des classes
Remplacer une union par une hiérarchie de classes
Remplacer les constructions enum par des classes
Remplacer les pointeurs de fonctions par des classes et des interfaces
Chapitre 6 Méthodes
23.
24.
25.
26.
27.
28.
Vérifier la validité d'un paramètre
Procéder à des recopies défensives en cas de besoin
Concevoir avec attention la signature d'une méthode
Utiliser la surcharge avec discernement
Renvoyer des tableaux vides plutôt que pull
Ecrire des commentaires de documentation pour tous les éléments exposés d'une API
Chapitre 7 Programmation générale
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
Minimiser la portée des variables locales
Connaître et utiliser les bibliothèques
Eviter float et double si un résultat exact est requis
Eviter les chaînes de caractères là où d'autres types sont plus appropriés
Attention à la performance dans la concaténation de chaînes de caractères
Faire référence à un objet via son interface
Préférer les interfaces à la réflexion
Utiliser judicieusement les méthodes natives
Optimiser judicieusement
Suivre les conventions de nommage généralement acceptées
Chapitre 8 Exceptions
39.
40.
41.
42.
43.
44.
45.
46.
47.
N'utiliser une exception que dans des situations exceptionnelles
Utiliser une exception vérifiée pour une situation récupérable et une exception non vérifiée pour une
erreur de programmation
Ne pas abuser des exceptions vérifiées
Préférer l'utilisation d'une exception standard
Lever des exceptions en rapport avec l'abstraction
Documenter toutes les exceptions levées par une méthode
Inclure l'information de contexte dans les messages détaillés
Garantir l'atomicité d'une erreur
Ne pas ignorer une exception
88
96
95
95
98
102
113
117
117
120
124
126
131
133
137
137
141
145
148
151
153
155
158
160
164
169
169
173
175
177
179
182
184
186
188
Chapitre 9 Threads
189
48.
49.
50.
51.
52.
53.
189
196
202
205
209
213
Chapitre 10
54.
55.
56.
57.
Synchroniser l'accès à toute donnée partagée et muable
Eviter toute synchronisation excessive
Ne jamais invoquer wait en dehors d'une boucle
Ne pas s'appuyer sur l'ordonnanceur de threads
Documenter la sûreté des threads
Eviter les groupes de threads
Sérialisation
Implémenter judicieusement Serializable
Envisager l'utilisation d'une sérialisation sur mesure
Rédiger la méthode readObject de manière défensive
Fournir une méthode readResolve lorsque cela est nécessaire
215
215
221
228
235
Bibliographie
239
Index des idiomes et patterns
243
Index
TOP
245
Téléchargement