Votre navigateur est obsolète. Téléchargez un navigateur moderne, par exemple FireFox.
Léa-Linux : Forum
Le forum de Léa abrite des discussions autour des Logiciels libres.
Syndication
  • RSS ForumForum complet
  • RSS Forum - DéveloppementForum - Développement
  • RSS Forum - Développement - 324872Cette discussion

Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Important : quand vous posez une question, n'oubliez pas de nous donner les indications suffisantes pour que nous puissions répondre. En effet, la divination n'est pas le fort du Linuxien averti. Pour une meilleure compréhension, le bon usage de la grammaire et de l'orthographe est fortement encouragé. En particulier, le langage SMS est à éviter absolument. En cas d'abus, il pourra être censuré sans autre forme de procès.
Les messages dont le contenu est illégal (incitant à la haine - raciale ou autre, diffamant), ou dont le contenu est sans rapport avec le sujet du forum, ou qui sont parfaitement stupides ou hors sujet seront supprimés sans pitié. Il pourra même être fait appel au fournisseur d'accès du coupable pour faire cesser ses agissements.
» Index du forum » Développement » habitudes de programmation
Aller à la discussion: PrécédentSuivante
Action: Nouveau sujetChercherS'authentifier
habitudes de programmation
Auteur: alexkid (IP enregistrée)
Date: le 17 juin 2007 à 21:16

Bonjour,

J'ai changé mes habitudes de programmation sans m'apercevoir. En fait à chaque fois que je lance une fonction f, je teste ce qu'elle retourne et si elle retourne une erreur je quite proprement le programme. Mais voilà, je me rends compte que ça deviens un peu lourd à lire, exemple :

if(!(XCopyArea( blabla ))) {
perror("blabla");
close(blabla);
fclose(blabla);
}

if(!(XCopyArea( blabla ))) {
perror("blabla");
close(blabla);
fclose(blabla);
}

if(id_file == -1) {
perror("blabla");
close(blabla);
fclose(blabla);
}

...

Voilà, du coup mes programmes deviennent super longs, je me demande si je ne fais pas fausse route ? Bientôt je vais me mettre à tester la variable errno à chaque ligne écrite.

Merci d'avance

Re: habitudes de programmation
Avatar
Auteur: Fanch (IP enregistrée)
Date: le 18 juin 2007 à 09:06

Non tu as raison, c'est bien ce qu'il faut faire : tout appel critique doit faire l'objet d'un traitement d'erreur et quoi qu'il en soit d'une ligne de log (potentiellement désactivable).
En revanche, ta façon de procéder est lourde. Chacun fait un peu comme il veut, mais une maniere plus pratique (àmha) de faire est la suivante :
#define CHECKED_CALL(fct, error_cond, lbl) if ( fct error_cond ) goto lbl

...

CHECKED_CALL( XCopyArea( blabla ), == 0, Err_maFonction) ;

...

Err_maFonction:;
    perror("blabla"); 
    close(blabla); 
    fclose(blabla); 
...


Bien sûr ça n'est qu'un exemple, tu peux créer plusieurs macros de contrôle de lignes (notamment pour automatiser les logs).
Voilà ; au passage, c'est la seule et unique façon d'utiliser proprement l'instruction goto.

L'inconvénient de ce système est qu'il devient vite difficile à debugger (à cause des macros) ; il implique donc d'avoir des logs impeccables ...

Have fun !

------- <br />
La meilleure façon de prédire le futur, c'est de l'inventer ~ Alan Kay

Re: habitudes de programmation
Auteur: Calou (IP enregistrée)
Date: le 18 juin 2007 à 16:20

Salut,
Gerer les erreurs de ces appels a fonction est le minimum que tu puisses faire.
Dans ton exemple, c'est encore plus parlant. Oublier de fermer proprement le fichier que tu as ouvert est aussi bete que de faire une voiture sans frein.

Pour l'écriture, c'est du cas par cas, ca dépend de ton niveau d'appel, de ce que tu as a faire dans le cas ou ca se passe bien ou du nombre d'erreurs possibles.

L'idee des macros est assez sypathique, mais j'aime pas trop (meme si il y a la maniere dans ce que tu presentes).

En général, je prefere traiter l'erreur dans le else... (mais bon c'est du cas par cas)

Re: habitudes de programmation
Auteur: alexkid (IP enregistrée)
Date: le 20 juin 2007 à 08:54

Bonjour,

Merci pour vos réponses. En fait, dans des bouqins de programmation écrits par des profs qui maîtrisent, ils ne font pas comme cela, ils écrivent très légèrement. Et puis dans certains codes source c'est pareil. C'est pour ça que j'étais un peu désorienté.

à plus.

Re: habitudes de programmation
Avatar
Auteur: Fanch (IP enregistrée)
Date: le 20 juin 2007 à 09:15

Dans les bouquins c'est normal qu'il n'y ait pas de traitement d'erreur aussi lourd que dans la vie réelle : ces traitements rendraient les listing illisible sur papier et n'ont aucun intérêt (à priori) par rapport à ce qu'illustre ledit listing.

Dans certains sources, c'est déjà moins normal bien que certains appels ne nécessitent aucun contrôle.

------- <br />
La meilleure façon de prédire le futur, c'est de l'inventer ~ Alan Kay



Nom du forum : (antispam) - (en développement:saisir un texte pour le message, rempli cette zone automatiquement)
Votre nom: 
Votre email: 
Sujet: 

 
Ce forum est boosté par Phorum.