LA CLASSE DEBUG STREAM

cs_Mr.X Messages postés 118 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 2 novembre 2007 - 13 avril 2007 à 18:52
adeldz Messages postés 1 Date d'inscription mardi 4 avril 2006 Statut Membre Dernière intervention 14 avril 2007 - 14 avril 2007 à 10:31
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/42160-la-classe-debug-stream

adeldz Messages postés 1 Date d'inscription mardi 4 avril 2006 Statut Membre Dernière intervention 14 avril 2007
14 avril 2007 à 10:31
Bonjour, je vais donner certaines explications a propos des points que Mr.X a pose.

1. Pour ce qui du enum, je pense que c'est une bonne habitude que de ne pas utilser des nombres maqique tel que 255 ou autre, puis cette constante est assez utilsee dans la definition des fonctions de la classe.

2. Si quelqu'un a consulte le fichier Defs.h, il aurait remarque que cette classe fait partie d'une bibliotheque, d'ou le namespace. Il s'agit de la premiere d'un serie de classes que je compte publier dans Code source. D'ailleur il faut toujour avoir la bonne habitude d'encapsuler sont code dans un namespace.

3. Pour ce qui est du try/catch; il ne faut pas oublier le but principal de cette classe qui est le tracage durant le debuggage, il serait mal saint qu'une classe de ce genre puissent "lancer" une exception. Donc autant eliminer tout exceptions pour garder la semantique de la classe correcte. Si une exception s'echappe de l'une des fonctions de cette classe, le code client devra etre en mesure de la gerer, seulement le code utilsant notre classe de tracage n'est pas defini durant le mode "release". Donc meme la semantique du code client sera differente entre deux mode de compilation (Debug, Release).

3. Pour utilser les templates, la classe TyDebugStream devra etre derivee des flux stl (std::ostream) et redefenir un certain nombre de fonctions. Il s'agit de garder les choses simples, j'utilse la fonctions Win32 ::StringCchPrintf. Il impossible d'utilser les templates dans ce cas puisque cette fonction prend le type des ces arguments a la maniere de la printf.

Je termine par un grand remerciement a Mr.X pour l'interet qu'il a porte a cette miniscule classe. merci beacoup.
a+
cs_Mr.X Messages postés 118 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 2 novembre 2007
13 avril 2007 à 18:52
euh plutôt que d'utiliser tout un tas de surchargement d'opérateur, utilisé les templates n'aurait pas été une meilleur idée ?
Sinon il y a un protected qui ne sert à rien et si je ne mabuse un enum pour une seul variable c'est sans grand intérêt ...
Et puis mettre un namespace c'est pas super utile pour le coup je trouve, c'est plus contraignant qu'autre chose.
Une dernière chose, pourquoi tu fait un try{}catch(...){} mais tu ne fait rien sur l'erreur ? Je vois pas l'intéré, d'autant plus que si l'exception n'est pas relancé personne ne pourrat savoir de quel genre d'erreur il s'agit.