Bonjour, je vais bientôt passer un oral sur le programme du capteur rfid que j'ai du faire dans un projet
. Je me suis renseigné sur tout le programme mais je bute sur quelques lignes :
Modifie ton message pour mettre le code entre balises (voir messages épinglés en haut du forum français), là tel que c'est il y a un "[ i ]" qui a disparu et transforme les caractères en italiques, donc ton code n'est pas celui qui est posté...
lesept:
Modifie ton message pour mettre le code entre balises (voir messages épinglés en haut du forum français), là tel que c'est il y a un "[ i ]" qui a disparu et transforme les caractères en italiques, donc ton code n'est pas celui qui est posté...
Que fait content.concat?
JE suppose que content a été initialisé à rien ("\0"), et qu'il est quelque part dans un tas de variables. Pour rajouter un caractère en fin, et que ça se termine par zero -tout en restant d'un seul tenant- , il faut le déplacer...
JE ne sais pas si c'est optimal pour un affichage (de debugging)
La documentation externe ne dit pas si elle va faire de l'allocation mémoire en pagaille ou pas.... ce qui serait plus inefficace que strcat (on fixe la taille du buffer une bonne fois pour toutes) ou l'adressage direct dans un tableau de charactères...
Seulement, le
if ... then ... else est lisible ! (et , une fois optimisé, ça doit aller aussi vite: ce n'est pas en étant cryptique que le code va plus vite)
(nb: pour la même raison -obscurité et redondance- hackable Magazine a détaillé le fonctionnement ... et promis de ne jamais l'utiloser)
Je connais le problème. Dans mon entreprise, le responsable qualité informatique avait décidé de l'interdire ... juste par ce qu'il n'arrivait pas à se souvenir de l'ordre des opérandes ( vrai/faux en 1er ou en dernier?).
C'est projeter ses problèmes personnels à la face du monde, quand même.
Entre
printf ( "%s\n", p ? p : "NULL" );
et
if ( p )
printf ( "%s\n", p );
else
printf ( "NULL\n" );
je préfère de loin la 1ère formulation qui se lit fort bien (à mon sens).
Je suis aussi partisan de l'opérateur ternaire, également contre l'avis du manuel qualité informatique de ma société.
Je suis pour employer toutes les ressources du langage et pas seulement un subset.
Il est plus élégant en Python :
is_nice = True
state = "nice" if is_nice else "not nice"
nice = True
personality = ("mean", "nice")[nice]
print("The cat is ", personality)
Effectivement, il y a beaucoup de gens qui jugent cet opérateur compliqué. Certains vont jusqu'à l'interdire.... ou à l'expliquer mais à ne pas en mettre à l'avenir dans leur revue (qui se porte très bien sans, merci...).
A noter que je n'avais pas attendu l'avis plein de bon sens de Hackable Magazine, ni celui de divers responsables qualité (je ne fais pas un référendum pour décider de mon style de programmerie)
Mais pourquoi faire simple quand on veut faire compliqué? (ainsi, on montre qu'on est GRAND...)
Et quelle est la cause de l'existence même de ce post?
L'accès au C aux débutants est semé d’embûches (double sémantiques des caractères &, *., ...). Il n'y a pas de mystère, pour bien faire il faut savoir, pour savoir il faut apprendre... Je rappelle que le C est quand même la langage de belles réalisations, modernes. Ceux qui ont appris ?: et à qui on laisse la possibilité de l'utiliser (honnêtement je ne pensait même pas que certains l'interdisait !!!) semble l'apprécier :
il est utilisé par exemple 45203 fois dans les sources d'un noyau linux récent et 2923 fois dans les sources arduino récentes.
biggil:
Je connais le problème. Dans mon entreprise, le responsable qualité informatique avait décidé de l'interdire ... juste par ce qu'il n'arrivait pas à se souvenir de l'ordre des opérandes ( vrai/faux en 1er ou en dernier?).
Bonjour,
Il était pas un peu c*n le responsable qualité informatique?
C'est comme si il interdisait le 'if' car il ne se rappelle plus si l'instruction est exécutée quand la condition entre parenthèse est vraie ou fausse.
L'exemple que tu cites est très parlant pour illustrer les bienfaits de cet opérateur ternaire.
Bon, le posteur originel voulait comprendre un code contenant:
un "bel " exemple de défense de la corporation par l'obscurité
et un risque potentiel, sur les micros sans ramasse miettes (faut dire garbage collector pour faire in dans une startup nation) , de fuite mémoire (strncat,travaillant sur des tableaux de taille bien calculée, ne génère pas ces ennuis).
Il semblerait que la chose avait pour but de faire une jolie impression de débugging (ce qui est paradoxal, pour le moins).
Si c'est le cas, il y a deux solutions:
a) l'expliquer avec diplomatie, des fois qu'il tombe sur un jury de bornassons défendeurs d'un emploi parasitaire.
ou
b) constater que le code restant est sans bugs, et virer des instructions de débugging qui peuvent s'avérer nuisibles.
bin oui, sinon il ferait pas de la qualité, mais de l'informatique :-)))))))))))
Cela me rappelle le rédacteur du manuel des règles de programmation de ma société.
Il était développeur, mais plutôt procédurier et pas très pointu.
-> direction la qualité, et hop
Parce que des pointus, il y en a déjà en Inde, pas bien cher, et Microsoft se met à subventionner une fac d'informatique -et un projet de gestion de l'eau- à Saint Louis, (NW sénégal, où les salaires d'un informaticien pointu -et ça s'émousse, avec l'âge- sont interessants -et un bout de code pointu, ça se télécharge facilement )