Quand on développe en Java et qu'on écrit des méthodes, on a souvent le cas de paramètres ayant des valeurs incorrectes (genre un paramètre nul).
Ce qu'on fait d'ahbitude, c'est une vérification simple :
if(toto==null) {
toto = "toto";
}
C'est laid, hein ?
Et en plus, ça pollue le code.
En me baladant sur internet à la recherche de la solution à un problème compliqué de collection basée sur le hash contenant des éléments mutables, je suis tombé sur cet article : mutable entries in a collection qui m'a mené à celui-ci (beaucoup plus intéressant) : RuntimeExceptions and Gurus failing to meditate bon, j'aime bien la GuruFailedToMeditateException, mais ce que j'aime surtout beaucoup, c'est les vérifications de préconditions avec la classe Preconditions. J'aime même tellement ça que je me demande comment je pourrais inclure ça dans mon projet à grands coups d'annotations (pour que ça marche bien et que ça puisse aussi générer de la doc).
Du coup, j'ai commencé à re-jeter un coup d'oeil aux frameworks de programmation par contrat en Java.
Bref, c'est un sujet assez intéressant, sur lequel je vais essayer de creuser un peu.
Comments [0]
Dans majick-properties, je suspecte le code que j'ai écrit d'être potentiellement à l'origine de fuites de mémoire. Et ça, c'est plus qu'embêtant quand on fait une bibliothèque dont le but est de faciliter la vie.
Surtout que, traditionnellement, la chasse aux fuites mémoires en Java est compliquée : il faut un profiler (en Java, le meilleur rapport qualité/prix est obtenu avec le profiler de NetBeans), trouver le truc qui foire, le corriger, et espérer que ça tienne
Heureusement, la communauté Java dispose maintenant de méthodes permettant de vérifier que ces fuites de mémoire ne reviennent pas. La première que j'ai trouvé utilise une librairie dont le nom seul est un hommage au bont goût : insane. Et la deuxième utilise jUnit pour parvenir au même résultat, ce qui fait que je vais pouvoir utiliser les concepts dans mes tests. Je me demande quand même s'il ne va pas falloir que je regarde insane de près pour améliorer ça, parce qu'en fait, cette deuxième solution ne semble pratique que quand on sait précisément ce qu'on cherche, alors que la première est plus efficace en terme d'exploration.
Tiens, au fait puisqu'on parle de mémoire en Java, il semble que cet article : understanding weak references, soit une mine d'infos sur les distinctions subtiles entre weak, soft et phantom references.
Comments [0]
C'est le genre de trucs qui m'énervent, ça.
J'ai voulu être sérieux, j'ai fait une tonne de tests unitaires, et sans même avoir de rapports de couverture de test dans maven, je suis déja certain d'avoir au moins 75 % du code testé.
Enfin, testé ... dans Eclipse.
Parce que dans Maven, c'est une autre histoire. J'ai une espèce de sale foutu bug qui fait que mon premier test unitaire Swing (qui utilise bien sûr FEST-Swing) ne s'arrête pas.
Ah, si mon fan était là ! Il me dirait bien sûr que c'est un sale problème d'utilisation de l'EDT. Ouais, enfin bon, quand je regarde le code de mon test, il n'y a pas grand chose qui me choque.
Et encore moins quand j'utilise les méthodes de FEST-Swing pour m'assurer que je fais tout dans l'EDT.
Bref, je vais être bon pour fouiller.
Ce que ça a de particulièrement agaçant, c'est que comme le test ne se termine pas, je n'arrive pas à faire de
mvn deploy
Et ça, ça m'agaçce avec une force !
Bah ! Je trouverai la solution demain.
Comments [2]
Cette semaine, j'ai vécu une espèce de montagne russe un peu bizarre ...
En effet, Jeudi, j'ai découvert blueMarine, une tentative en java de copie d'Adobe Lightroom, je pense. En tout cas, c'est la proximité que montrent le site de blueMarine ainsi que les screenshots de Lightroom. Bref, ça avait l'air prometteur.Ce matin, n'écoutant que mon courage, je télécharge blueMarine (ouch, 30 Mo, j'y reviendrai ...), et je le lance.Bon, c'est sans doute une bonne copie de Lightroom, mais qui souffre d'un gros problème : lorsqu'un logiciel se présente comme étant orienté workflow de traitement d'image, on s'attend à être largement guidé dans ses activités, un peu comme, par exemple, Eclipse guide le développeur Java dans ses activités grâce aux différentes perspectives. Là, rien de tout ça ! On a une fenêtre avec un bon paquet de panneaux différents, et dans tout ça, je n'ai pas su quoi faire. Et le pire, dans tout ça, c'est que blueMarine propose un support de l'IPTC digne d'iPhoto '06, que je viens de mettre à jour ...Bref, ça relance (oui oui, une fois de plus) mon projet de me faire mon propre logiciel de gestion de phototèque avec les fonctions qui collent à ma méthode de travail.
N'empêche, un truc m'a perturbé.
Vous autres, mes lecteurs chéris, ne le savez peut-être pas (sauf évidement mon fan), mais je bosse dans une boîte qui édite des logiciels en java. Et franchement, nous, pour faire un équivalent de ce blueMarine, il ne nous faudrait pas 30 Mo, mais 4 ou 5 (à cause des images). Et cette réflexion est le signe de deux choses :
Bon, bref, assez râlé, revenons à des solutions qui marchent, en l'occurence iPhoto '08. Cette mise à jour apporte une nouveauté graphique inutile : les événements et, surtout, surtout, l'export des champs IPTC. Et ça, ça rend encore une fois iPhoto indispensable à ma gestion de phototèque. grmbl.
Au moins, ça marche bien et simplement
Comments [0]
Comments [0]