Que pensez-vous de cette technique de dev?

La question :

Bonjour,

ne sachant pas trop où poser cette question, je viens par ici, et si
quelqu'un connait un endroit plus pertinent, merci d'avance de me
rediriger.

Alors voilà, je dois effectuer plusieurs tests à la suite, et si l'un
d'entre eux est pas ok, je ne dois pas faire un traitement.

d'habitude, j'utilise les if imbriqués, mais quand il y en à plusieurs,
c'est laborieux et source d'erreurs.

les tests portent sur des choses différentes, je ne peux pas non plus
utiliser select case.

par ex, je teste:
si servive pack = 1 pas ok
si os= windowsxp pas ok
si espace dique< 1Gi pas ok
etc

voilà ma technique:
do while true
si servive pack = 1 message pas ok puis exit do
si os= windowsxp message pas ok puis exit do
si espace dique< 1Gi message pas ok puis exit do
traitement si tout ok
exit do
loop

en réalité j'ai au moins 5 tests imbriqués...

que pensez-vous de cette technique:
stupide, il existe une méthode simple et bien meilleure
possible mais dangereux, risqué, pas efficace ou je ne sais quoi
c'est une technique courante et sans problème

par avance merci pour vos avis ou redirections.

--
C'est quand ça fait chier de le faire qu'on rend vraiment un service.
(Réflexion)

Poser votre question sur le forum Programmation

Les 4 réponses :

Le Wed, 23 Nov 2011 17:45:37 +0100, Tr@nquille
a écrit:


voilà ma technique:
do while true
si servive pack = 1 message pas ok puis exit do
si os= windowsxp message pas ok puis exit do
si espace dique< 1Gi message pas ok puis exit do
traitement si tout ok
exit do
loop


Bonsoir,

Un truc comme ça :

int test()
{
if(service_pack == 1)
{
puts("Pas OK");
return 1;
}

if(strcmp(os, "windowsxp") == 0)
{
puts("Pas OK");
return 1;
}

if(disque < (1 * 1024 * 1024 * 1024))
{
puts("Pas OK");
return 1;
}

return traitement();
}

Matt...

--
Utilisant le client e-mail révolutionnaire d'Opera :
http://www.opera.com/mail/

*Ecrit* *par* *Matt...*:


Le Wed, 23 Nov 2011 17:45:37 +0100, Tr@nquille
a écrit:



voilà ma technique:
do while true
si servive pack = 1 message pas ok puis exit do
si os= windowsxp message pas ok puis exit do
si espace dique< 1Gi message pas ok puis exit do
traitement si tout ok
exit do
loop



Bonsoir,



Un truc comme ça :



int test()
{
if(service_pack == 1)
{
puts("Pas OK");
return 1;
}



if(strcmp(os, "windowsxp") == 0)
{
puts("Pas OK");
return 1;
}



if(disque < (1 * 1024 * 1024 * 1024))
{
puts("Pas OK");
return 1;
}



return traitement();
}



Matt...


ok, j'avais pensé à éclater le code en divers fonctions etc, mais comme
c'est un truc assez volumineux que je reprends pour quelques
adaptations vites faites (pas question d'y passer des jours en fait)
j'essayais d'imaginer autre chose de plus vite fait.
de toute façon à terme je dois tout refaire autrement mais pas avant mi
2012...
pas de danger que je ne verrais pas dans mon code?

--
Fait de ta vie ce que tu estimes le mieux. (Conclusion)

Le Wed, 23 Nov 2011 17:45:37 +0100
Tr@nquille a écrit :


Bonjour,

ne sachant pas trop où poser cette question, je viens par ici, et si
quelqu'un connait un endroit plus pertinent, merci d'avance de me
rediriger.

Alors voilà, je dois effectuer plusieurs tests à la suite, et si l'un
d'entre eux est pas ok, je ne dois pas faire un traitement.

d'habitude, j'utilise les if imbriqués, mais quand il y en à
plusieurs, c'est laborieux et source d'erreurs.

les tests portent sur des choses différentes, je ne peux pas non plus
utiliser select case.

par ex, je teste:
si servive pack = 1 pas ok
si os= windowsxp pas ok
si espace dique< 1Gi pas ok
etc

voilà ma technique:
do while true
si servive pack = 1 message pas ok puis exit do
si os= windowsxp message pas ok puis exit do
si espace dique< 1Gi message pas ok puis exit do
traitement si tout ok
exit do
loop

en réalité j'ai au moins 5 tests imbriqués...

que pensez-vous de cette technique:
stupide, il existe une méthode simple et bien meilleure
possible mais dangereux, risqué, pas efficace ou je ne sais quoi
c'est une technique courante et sans problème

par avance merci pour vos avis ou redirections.


Je pense que c'est un bricolage tordu (ou que je ne suis pas réveillé
et que j'ai manqué quelque chose, ce qui est possible aussi) .

Mais c'est plus une question concernant le langage lui-même en fait...

Par exemple si dans ton langage il y a des goto, tu peux les utiliser.
C'est la même chose que ta boucle, sauf que tu n'écris pas que c'est
une boucle alors que ce n'en est pas une en réalité, ce qui est
trompeur.

Tu peux utiliser des if en modifiant l'imbrication :

En Java :
if (! test1)
{
... (message)
}
else if (! test2)
{
... (message)
}
else if (! test3)
{
... (message)
}
...
else
{
... (traitement)
}

Dans certains langages il existe une construction elseif, elif, ...
mais dans les langages comme C ou Java qui ne la possèdent pas tu peux
faire tout comme en utilisant leur possibilité de ne pas mettre
d'accolades autour du code quand il n'y a qu'une instruction à exécuter
dans la branche.

Si tu veux afficher tous les messages d'erreur, tu peux faire ça :
erreur = faux ;
if (! test1)
{
... (message)
erreur = vrai ;
}
if (! test2)
{
... (message)
erreur = vrai ;
}
...
if (! erreur)
{
... (traitement)
}

*Ecrit* *par* *Yliur*:


Le Wed, 23 Nov 2011 17:45:37 +0100
Tr@nquille a écrit :



Bonjour,

ne sachant pas trop où poser cette question, je viens par ici, et si
quelqu'un connait un endroit plus pertinent, merci d'avance de me
rediriger.

Alors voilà, je dois effectuer plusieurs tests à la suite, et si
l'un d'entre eux est pas ok, je ne dois pas faire un traitement.

d'habitude, j'utilise les if imbriqués, mais quand il y en à
plusieurs, c'est laborieux et source d'erreurs.

les tests portent sur des choses différentes, je ne peux pas non
plus utiliser select case.

par ex, je teste:
si servive pack = 1 pas ok
si os= windowsxp pas ok
si espace dique< 1Gi pas ok
etc

voilà ma technique:
do while true
si servive pack = 1 message pas ok puis exit do
si os= windowsxp message pas ok puis exit do
si espace dique< 1Gi message pas ok puis exit do
traitement si tout ok
exit do
loop

en réalité j'ai au moins 5 tests imbriqués...

que pensez-vous de cette technique:
stupide, il existe une méthode simple et bien meilleure
possible mais dangereux, risqué, pas efficace ou je ne sais quoi
c'est une technique courante et sans problème

par avance merci pour vos avis ou redirections.



Je pense que c'est un bricolage tordu (ou que je ne suis pas réveillé
et que j'ai manqué quelque chose, ce qui est possible aussi) .



Mais c'est plus une question concernant le langage lui-même en
fait...



Par exemple si dans ton langage il y a des goto, tu peux les
utiliser. C'est la même chose que ta boucle, sauf que tu n'écris pas
que c'est une boucle alors que ce n'en est pas une en réalité, ce qui
est trompeur.



Tu peux utiliser des if en modifiant l'imbrication :



En Java :
if (! test1)
{
... (message)
}
else if (! test2)
{
... (message)
}
else if (! test3)
{
... (message)
}
...
else
{
... (traitement)
}



Dans certains langages il existe une construction elseif, elif, ...
mais dans les langages comme C ou Java qui ne la possèdent pas tu
peux faire tout comme en utilisant leur possibilité de ne pas mettre
d'accolades autour du code quand il n'y a qu'une instruction à
exécuter dans la branche.



Si tu veux afficher tous les messages d'erreur, tu peux faire ça :
erreur = faux ;
if (! test1)
{
... (message)
erreur = vrai ;
}
if (! test2)
{
... (message)
erreur = vrai ;
}
...
if (! erreur)
{
... (traitement)
}


désolé du retard...
finalement, j'ai opté pour la solution du if then elseif elseif else
endif (c'est du vbscript)
ça va bien.
merci des conseils!

--
L'important n'est pas de convaincre mais de donner à réfléchir.
(Isidore Katzenberg)

Poser votre question sur le forum Programmation

Questions similaires :

povez vous m aider?

Il y a un problème de programmation en langage Pascal qui m a gêné . J espère que vous m aidiez à le résoudre. Ecrire un programme Pascal qui fait défiler verticalement et du haut vers le bas une chaîne de caractères CH. En arrivant en bas cette chaîne fait des rebonds avant de se stabiliser sur la...