Toujours s'exprimer dans le domaine d'application

Juste un petit post pour pousser une gueulante contre une mauvaise habitude assez répandue chez les programmeurs : utiliser une interface de style .Net pour accéder à un format de fichier.

Par exemple un format structurel de ce type :

Root
{
     Attribut1=1;
     Attribut2=3;

    MyVector
    {
       X=0;
       Y=1;
       Z=2;
    }
}

sera souvent accédé de la manière suivante :

CAttribut MyAttribut1 = MonDocument.RootElement.GetAttribute("Attribut1");
CAttribut MyAttribut2 = MonDocument.RootElement.GetAttribute("Attribut2");

printf("%d %d n", MyAttribut1.GetValueInt(), MyAttribut2.GetValueInt());

CElement MyVectorElem  = MonDocument.RootElement.GetChildEntry("MyVector");

CAttribut MyX = MyVectorElem.GetAttribute("X");
CAttribut MyY = MyVectorElem.GetAttribute("Y");
CAttribut MyZ = MyVectorElem.GetAttribute("Z");

printf("%f %f %f n", MyX.GetValueSingle(), MyY.GetValueSingle(), MyZ.GetValueSingle());

Cette écriture est à la fois verbeuse et lente. C'est pourquoi je préfère de loin ceci :

struct SMyFormat
{
    int m_Attribut1;
    int m_Attribut2;

    Vector3D m_MyVector;
};

SMyFormat const & MyRootElem = MonDocument.GetRootEntryAs<SMyFormat>();
printf("%d %d n", MyRootElem.m_Attribute1, MyRootElem.m_Attribute2);
printf("%f %f %f n", MyRootElem.m_MyVector().m_X, MyRootElem.m_MyVector().m_Y, MyRootElem.m_MyVector().m_Z);


Cette solution requière 3 lignes de code contre 8 pour la précédente.

Il existe tout de même beaucoup d'API qui ont bien compris cela :
  • http://www.codesynthesis.com : C++,
  • EMF de Eclipse : Java,
  • DataSet Visual Studio : C#.
Je vous encourage donc de voir l'accès aux formats de données de cette manière là i.e. en utilisant le langage du domaine dans lequel vous exercez.


Article ajouté le 2008-08-10 , consulté 10 fois

Commentaires



Poster un commentaire





http://





Merci de recopier le nombre présent à gauche dans la case de texte ci-dessous ( Pourquoi ? )





Liens

Voir les articles de la catégorie " Programmation "

Retour aux articles



Recommander ce blog | Contacter l'auteur | Reporter un abus | S'abonner au blog Flux RSS du blog | Espace de gestion

Créer un blog gratuit avec Blog4ever