IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)


Critique du livre Java efficace de Joshua Bloch


Dernière mise à jour : 22/1/2006

couverture du livre 'Java Efficace'

note du livre : 5.0

Java Efficace   fr  

Guide de Programmation

de Joshua Bloch
Alexis Moussine-Pouchkine (trad.)

Public visé : Avancé


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.

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 exception." James Gosling, ancien vice-président de Sun Microsystems, co-créateur du langage Java.


Critique du livre par la rédaction ( Christophe Jollivet ) :

Programmez-vous correctement?

Ce livre s'adresse à ceux qui connaissent déjà Java, mais souhaitent produire un code solide. Si vous travaillez en équipe, il vous est sans doute arriver d'écrire des classes ou API qui sont ensuite utilisées par vos collègues. Malheureusement, l'usage que font vos collègues de votre travail entraine soit des erreurs de comportement soit des plantages dans votre code. Il peuvent même vous amener à devoir corriger une grande partie de l'application le jour où vous voulez faire évoluer votre API. Si cela vous est arrivé, ce livre est pour vous.

Il est constitué d'une série de 57 recommandations. Ces recommandations peuvent se lire dans n'importe quel ordre, et présentent souvent des références les unes vers les autres. Elle sont regroupées par thématiques comme le montre la table des matières ci dessous et sont accompagnées d'exemples de code. Vous y trouverez même quelques critiques sur les API du JDK. Certaines se lisent tres vite (une page et demi), d'autres font près d'une dizaine de pages et demandent des efforts de concentration. Le style rédactionnel est très agréable à lire, même si la densité d'informations est élevée.

Ces conseils fournis par l'auteur d'une partie de java.util vous permettront de comprendre toutes les règles nécessaires au développement d'une API solide. Qu'il s'agissent d'immuabilité, de prévoir ou empêcher l'héritage et la surcharge, gérer la visibilité des méthodes et attributs, utiliser correctement les Exceptions et les Thread, vous trouverez une mine d'informations et surtout de bons conseils dans ce livre.


Sommaire

Création et destruction d'objets

  • 1. Privilégier des méthodes de fabrique statiques aux constructeurs
  • 2. Appliquer la propriété du singleton avec un constructeur privé
  • 3. Empêcher l'instanciation avec un constructeur privé
  • 4. Empêcher la duplication d'objets
  • 5. Éliminer les références d'objets obsolètes
  • 6. Éviter les finaliseurs

Méthodes communes à tous les objets

  • 7. Obéir au contrat général lors d’une redéfinition de la méthode equals
  • 8. Toujours redéfinir hashCode lorsque equals est redéfini
  • 9. Toujours redéfinir toString
  • 10. Redéfinir judicieusement clone
  • 11. Envisager l'implémentation de Comparable

Classes et Interfaces

  • 12. Restreindre l'accès des classes et de leurs membres
  • 13. Favoriser l'immuabilité
  • 14. Préférer la composition à l’héritage
  • 15. Prévoir et documenter l'héritage ou bien l’interdire
  • 16. Préférer les interfaces aux classes abstraites
  • 17. N’utiliser les interfaces que pour définir les types
  • 18. Favoriser les classes imbriquées statiques

Équivalents pour constructions du langage C

  • 19. Remplacer les structures par des classes
  • 20. Remplacer une union par une hiérarchie de classes
  • 21. Remplacer les constructions enum par des classes
  • 22. Remplacer les pointeurs de fonctions par des classes et des interfaces

Méthodes

  • 23. Vérifier la validité d’un paramètre
  • 24. Procéder à des recopies défensives en cas de besoin
  • 25. Concevoir avec attention la signature d'une méthode
  • 26. Utiliser la surcharge avec discernement
  • 27. Renvoyer des tableaux vides plutôt que null
  • 28. Écrire des commentaires de documentation pour tous les éléments exposés d’une API

Programmation générale

  • 29. Minimiser la portée des variables locales
  • 30. Connaître et utiliser les bibliothèques
  • 31. Éviter float et double si un résultat exact est requis
  • 32. Éviter les chaînes de caractères là où d'autres types sont plus appropriés
  • 33. Attention à la performance dans la concaténation de chaînes de caractères
  • 34. Faire référence à un objet via son interface
  • 35. Préférer les interfaces à la réflexion
  • 36. Utiliser judicieusement les méthodes natives
  • 37. Optimiser judicieusement
  • 38. Suivre les conventions de nommage généralement acceptées

Exceptions

  • 39. N'utiliser une exception que dans des situations exceptionnelles
  • 40. Utiliser une exception vérifiée pour une situation récupérable et une exception non vérifiée pour une erreur de programmation
  • 41. Ne pas abuser des exceptions vérifiées
  • 42. Préférer l'utilisation d’une exception standard
  • 43. Lever des exceptions en rapport avec l’abstraction
  • 44. Documenter toutes les exceptions levées par une méthode
  • 45. Inclure l'information de contexte dans les messages détaillés
  • 46. Garantir l'atomicité d’une erreur
  • 47. Ne pas ignorer une exception

Threads

  • 48. Synchroniser l'accès à toute donnée partagée et muable
  • 49. Éviter toute synchronisation excessive
  • 50. Ne jamais invoquer wait en dehors d’une boucle
  • 51. Ne pas s'appuyer sur l'ordonnanceur de threads
  • 52. Documenter la sûreté des threads
  • 53. Éviter les groupes de threads

Sérialisation

  • 54. Implémenter judicieusement Serializable
  • 55. Envisager l'utilisation d’une sérialisation sur mesure
  • 56. Rédiger la méthode readObject de manière défensive
  • 57. Fournir une méthode readResolve lorsque cela est nécessaire

Annexes

  • Bibliographie
  • Index des idiomes et patterns
  • Index

272 pages, juin 2002 Editions Vuibert, ISBN: 2-7117-4805-7

Commandez sur www.amazon.fr :
30,40 EUR TTC seulement(au lieu de 32 EUR TTC : prix éditeur) - Livraison Gratuite !!!

Voir également:
Tous les livres de DVP

Valid XHTML 1.1!Valid CSS!


Copyright © 2006 . Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.