Blogounage

Aller au contenu | Aller au menu | Aller à la recherche

vendredi 15 décembre 2006

Java Persistence with Hibernate

Il y a quelques semaines, j'ai vu passer ce billet sur le blog de l'équipe de développement d'Hibernate. Étant donné que j'avais "suffisamment", sans prétention aucune, contribué au forum d'Hibernate pour participer, j'ai immédiatement envoyé un mail à l'adresse indiquée. J'ai mis un descriptif très très court de mon expérience sur l'outil, tellement j'étais stressé d'avoir une chance de faire partie des heureux bénéficiaires et donc pressé d'avoir envoyé le mail :-).

Je n'ai eu aucune nouvelle pendant environ une semaine, je ne savais absolument pas s'il y avait eu 25 personnes avant moi ou pas, puis j'ai reçu le 5 décembre ce mail de la part de Christian Bauer :

A copy of 'Java Persistence with Hibernate' is on its way to you. Inside the US Manning expects to get the book to you this week, to Europe and other countries it might take more than a week.

If there is any problem with the delivery please contact me directly.

Thank you again for contributing to Hibernate.

Et la page récapitulative a été mise à jour :-).

Bon, je me suis dit : Je n'en parle pas tant que ce n'est pas définitif. Pis finalement, je suis allé récupérer ça à la poste ce matin :

800 pages, il va me falloir un peu de temps avant d'éventuellement pouvoir reparler du contenu :-).

samedi 11 mars 2006

De l'importance du nommage, état atteignable ou état invariant ?

Il y a quelques temps, j'ai eu l'occasion de rencontrer un cas qui m'a donné à réfléchir sur la signification des suffixes anglais able et ed. En l'occurrence, le cas portait sur une classe qui dérivait en Java de ArrayList qui s'appelait SortedArrayList.

Cette classe ajoutait la possibilité de tri à sa super-classe ArrayList. Elle possédait pour ce faire la méthode sort(), et c'est justement ça que je le lui reprochais.

Le suffixe able signifie qu'un objet peut atteindre un état, sans y être nécessairement constamment, par l'appel par exemple d'une méthode qui lui fera atteindre cet état à un instant t. Pour une propriété X, le sufixe ed signifie quant à lui qu'un objet est constamment Xed.

C'est peut-être un peu abstrait comme ça, je vais donc illustrer avec la classe SortedArrayList dont j'ai parlé ci-dessus.

SortableArrayList et non SortedArrayList

Une classe en ed, comme sorted, est triée. Cela signifie qu'elle l'est constamment, en considérant un point de vue extérieur à l'objet : en interne, l'objet peut ne plus respecter l'état, mais au retour de la méthode, il doit y être revenu. Exemple : dans le corps d'une méthode add d'un conteneur trié, il peut se faire que l'objet soit non trié à un instant t, mais jamais au retour de la méthode add en question.

Toute action occasionnant une modification de son contenu doit laisser l'objet ...Sorted trié à l'issue de l'opération. Par exemple, un add sur un SortedSet en Java n'a pas besoin d'être suivi par un tri pour qu'une itération ultérieure sur l'instance se fasse toujours dans l'ordre de tri.

À l'inverse, un objet suffixé par able est par exemple Triable et non Trié, ce qui n'est pas du tout la même chose. Ainsi, une classe nommée SortableArrayList possédera une méthode sort() et l'ajout d'un objet à cette liste pourra ne pas forcément garantir que l'objet soit constamment dans un état trié. Il sera alors possible d'appeler la méthode sort() pour rétablir l'état trié au moment voulu.

Quand utiliser able ou ed ?

C'est assez simple. Je dirais que ça peut d'ailleurs souvent être lié à des questions de performances. Il sera en effet certainement plus coûteux de chercher à maintenir un état particulier constamment si ce n'est pas absolument nécessaire. Auquel cas, il semblera alors plus approprié d'utiliser le suffixe able et la méthode permettant de revenir à cet état.

Si par contre, vous avez souvent, voire toujours besoin d'accéder à l'objet alors que celui-ci est dans l'état voulu, utilisez le suffixe ed pour que toute opération touchant à la structure de l'objet conserve l'état à son retour.

lundi 6 février 2006

Introduction à l'objet

Je suis en train de jeter un oeil à un cours de Java pour ma culture. Dans la deuxième partie de ce cours, on part en vrille :-) :

Je vous laisse en exercice de trouver d'où vient ce cours. J'ai vérifié, c'est très facile avec Joujeule... Mais ne vous moquez pas trop vite, celui qui a créé ce cours sait très bien ce qu'il dit (enfin, le plus souvent, quoi :p).

Note pour Vincent : Oui oui, c'est bien notre foufou à nous... Tu auras de plus reconnu Le Mal®.

page 2 de 2 -