Le code reste quand même assez discutable. Même si cela reste un petit bout de code il y a de quoi améliorer
Déjà les macros CHECK_ERR et INT_ARG n'ont aucun intérêt, faire des fonctions à la place serait plus lisible et permettrait au compilateur de produire des messages d'erreurs plus sympas.
D'autant que le second est erroné. Il fait appel à des variables qui ne son présentes que dans main et qui ne sont pas passés en paramètres. Donc en somme cette macro n'est pas réutilisable alors que cela ne coûterait rien de le faire en fonction.
char* endptr = 0;
Il est préférable d'initialiser un pointeur à NULL plutôt que 0.
if( !*arg || ( *arg && **arg != '-' ) )
Il vérifie que l'argument débute par un tiret mais ne vérifie pas la taille pour être sûr que l'argument a bien plus d'un caractère ce qui serait je pense pertinent.
Puis il vérifie deux fois que arg n'est pas nul, c'est inutilement redondant.
Ce n'est pas une erreur en soi mais la ligne me semble inutilement longue et complexifie la lecture de la boucle. La commande devrait être dans le corps de la boucle quitte à utiliser un do while qui serait plus judicieux ici.
Globalement le main je le découperais en plein de fonctions encore, il y a moyen.
Bref, c'était ma revue de code. Elle vaut ce qu'elle vaut.
[^] # Re: Petite review
Posté par Renault (site web personnel) . En réponse au journal bout de code pour relancer une commande dans certaines conditions. Évalué à 6.
Le code reste quand même assez discutable. Même si cela reste un petit bout de code il y a de quoi améliorer
Déjà les macros CHECK_ERR et INT_ARG n'ont aucun intérêt, faire des fonctions à la place serait plus lisible et permettrait au compilateur de produire des messages d'erreurs plus sympas.
D'autant que le second est erroné. Il fait appel à des variables qui ne son présentes que dans main et qui ne sont pas passés en paramètres. Donc en somme cette macro n'est pas réutilisable alors que cela ne coûterait rien de le faire en fonction.
Il est préférable d'initialiser un pointeur à NULL plutôt que 0.
Il vérifie que l'argument débute par un tiret mais ne vérifie pas la taille pour être sûr que l'argument a bien plus d'un caractère ce qui serait je pense pertinent.
Puis il vérifie deux fois que arg n'est pas nul, c'est inutilement redondant.
Ce n'est pas une erreur en soi mais la ligne me semble inutilement longue et complexifie la lecture de la boucle. La commande devrait être dans le corps de la boucle quitte à utiliser un do while qui serait plus judicieux ici.
Globalement le main je le découperais en plein de fonctions encore, il y a moyen.
Bref, c'était ma revue de code. Elle vaut ce qu'elle vaut.