[Dcmlib] [ITK-gdcm] update: plus constructif
Mathieu Malaterre
mathieu.malaterre at kitware.com
Tue Nov 9 20:55:36 CET 2004
Ok maintenant que j'ai crie' je vais mieux.
Donc les points pour moi qui sont essentiels:
- Avoir 100% des tests sur toutes les machines, j'ai encore des trucs
bizarre sur Win32 (borland/VC6).
- Reduire drastiquement la consommation memoire. DASH4 une machine qui
fais les ~800 tests VTK sans *aucun* problemes, se mets a genoux sur
TestAllReadImageWrite. La consommation memoire monte a 220Mo alors que
la machine n'a /que/ 256Mo
- Ca doit etre lie au point precedent, mais il faut *enlever* les memory
leaks. Sur Win je suis meme pas sur que le system est capable de
retrouver ces petits meme apres la fin de l'execution d'un programme gdcm.
- Revoir l'API actuelle serieusement. Je vais essayer de reprendre les
points que j'ai trouver en creusant dans gdcm.
1. Je continu a ne pas aimer les passages pas pointeurs, je prefererais
les passages pas reference. L'avantage c'est que ca anihilerait le
probleme de leaks si l'ont reduit l'usage de raw pointer. *Ou* alors on
utilise les auto_ptr de la stl
2. Des methodes longues de 20 caracteres. Des commentaires gigantesque
(en XP le code ne devrait pas avoir a etre commenter vu qu'un test en
demontrerait le comportement). Donc beaucoup plus de tests. A peine 70%
du code est teste' (sans compter la lib jpeg)
3. Plein d'inconsistences. Usage indifferent de "unkn", "??",
"Unknown", GDCM_UNFOUND. Des methodes utilises TagKey/TagName dans le
fichier .h et dans le fichier .cxx on passse a std::string
4. Enormement de variable globales:
const std::string GDCM_UNFOUND = "gdcm::Unfound";
const std::string GDCM_BINLOADED = "gdcm::Binary data loaded";
const std::string GDCM_NOTLOADED = "gdcm::NotLoaded";
const std::string GDCM_UNREAD = "gdcm::UnRead";
qui pollue le namespace. Meme si gdcm resoud ce probleme, je ne pense
pas que se soit une bonne pratique de programmation.
5. Du code dupliquer de partout.
Je suis sur que j'en oublie. Mais voila pour moi les points essentiels a
traiter avant d'ajouter des nouvelles features a gdcm.
Mathieu
Ps: sinon pour l'ecriture des fichiers dicom, j'aurais aimer une
distinction entre un reader et un writer. Ou en stl : un ifstream/ofstream
More information about the Dcmlib
mailing list