Go Down

Topic: // Commentaires inhabituels (Read 386 times) previous topic - next topic

Petite page pour ceux qui écrivent n'importe comment disponible dans Cent commentaires vallent mieux que pas du tout. Rien de nouveau sauf cette fin, que je recopie ici:






J'ai vu la ligne de code (bibliothèque accelStepper)
Code: [Select]
setMaxSpeed(100.0);
sans que l'auteur ne sache si la vitesse était en tr/ms ou en rd/s... Ce serait bien de pouvoir spécifier l'unité! Alors il faudrait écrire
Code: [Select]
setMaxSpeed(100.0); // 100 pas/s
Cela fait redondance pour le nombre 100, et c'est un pléonasme car c'est la traduction exacte en français de l'instruction. Et en plus il faudrait éventuellement un deuxième commentaire pour dire pourquoi on appelle la fonction. Cela pourrait donc donner:
Code: [Select]
setMaxSpeed(100.0); // 100 pas/s; Vitesse d'approche
Je cherchais pendant un temps comment l'écrire, et voici la première possibilité:
Code: [Select]
setMaxSpeed(100.0 /* pas/s */); // Vitesse d'approche
Pour peu que l'on passe une formule mathématique contenant des / ou des *, on ne s'en sort plus:
Code: [Select]
setMaxSpeed(50.0 * 2 /* pas/s */); // Vitesse d'approche double de la vitesse de coupe
J'ai eu l'idée d'utiliser une variable commentaire. C'est un mot à moi pour désigner une variable qui ne sert que de commentaire, que l'on peut affecter, mais dont on n'utilise pas la valeur ensuite. En principe elle est ignorée par le compilateur:
Code: [Select]
float vitesse_en_pas_par_seconde; // variable commentaire
...
setMaxSpeed(vitesse_en_pas_par_seconde = 50.0); // Vitesse de coupe
...
setMaxSpeed(vitesse_en_pas_par_seconde = 100.0); // Vitesse d'approche

C'est plus lisible, mais sait-on jamais ce qu'en fait le compilateur. Il y a quand même une affectation, ce n'est pas bien compréhensible par un novice... Au passage, j'ai pris une nouvelle convention: les les phrases en minuscules qui contiennent au moins un "_" mais pas aux extrémités sont des commentaires (les "_" aux extrémités sont pour les variables internes au bibliothèques). QuickStep V2.0 utilise la formulation suivante:
Code: [Select]
#define pas_par_seconde; // define commentaire
...
setMaxSpeed(50.0 pas_par_seconde); // Vitesse de coupe
...
setMaxSpeed(100.0 pas_par_seconde); // Vitesse d'approche

Le #define permet de remplacer pas_par_seconde par... rien du tout!
C'est clair, plus court, on a une unité, le préprocesseur vire le commentaire avant que le compilateur ne le voit. C'est la méthode que je préfère. Le #define ferait partie de la bibliothèque, les setMaxSpeed() seraient dans les exemples et dans les programmes des utilisateurs. Bien entendu, on pourra toujours écrire
Code: [Select]
setMaxSpeed(100.0 rd_par_s);
ce qui est un commentaire faux. Ce n'est qu'un commentaire, on peut y mettre ce que l'on veut, comme pour les autres commentaires!
Du coup, on peut déclarer un define commentaire
Code: [Select]
#define milli_secondes
pour pouvoir écrire tranquillement
Code: [Select]
delay(100 milli_secondes);
D'ailleurs est-ce vraiment un commentaire? J'ai appris à l'école que l'on devait toujours mettre une unité! Maintenant c'est fait
Pour le clin d'oeil à QuickStep, vous risquez un jour de trouver
Code: [Select]
quickStepDeplacement1(3200 micro_pas, SENS_POSITIF, 6250 coups_d_horloges_par_pas, 1024 pas_pour_accelerer, 512 pas_pour_decelerer);
plutôt que:
Code: [Select]
// Faire tourner le moteur en 16 micro-pas d'un tour, dans le sens direct, à 0,1tr/s
// avec une accélération de 50 micro-pas/s[sup]2[/sup] et une décélération deux fois plus importante
quickStepDeplacement1(3200, 1, 6250, 1024, 512);

J-M-L

#1
Jan 09, 2021, 10:09 am Last Edit: Jan 09, 2021, 05:16 pm by J-M-L
c'est là où C++ montre son age.

Des langages comme Swift ou Objective C ont une syntaxe d'appel de fonction qui permet d'exprimer le nom du paramètre (ou séparer le nom de la fonction en petits bouts)

perso, je mettrais simplement
Code: [Select]
setMaxSpeed(100.0); // en nombre de pas par secondeet bien sûr si j'avais écrit la bibliothèque la fonction se serait appelée
Code: [Select]
setStepsPerSecondMaxSpeed(100.0);
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

#2
Jan 09, 2021, 05:05 pm Last Edit: Jan 09, 2021, 05:08 pm by vileroi
Quote
Des langages comme Swift où Objective C ont une syntaxe d'appel de fonction qui permet d'exprimer le nom du paramètre (ou séparer le nom de la fonction en petits bouts)
Oui mais il faut que je me débrouille avec ce que j'ai et j'aime bien la Uno. Cela me rappelle le bon vieux temps.

Et puis avec ce type de commentaire, l'appel de la fonction permet d'exprimer aussi bien le nom du paramètre que l'unité!

J-M-L

Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous



Quote
perso, je mettrais simplement
setMaxSpeed(100.0); // en nombre de pas par seconde
Le problème c'est qu'on a souvent un autre commentaire à mettre, par exemple "avance rapide", "initialisation"...

Quote
setStepsPerSecondMaxSpeed(100.0);
Ça passe tant qu'on a un paramètre. Mais avec accelStepper, il faut appeler trois fonctions à chaque fois pour faire un mouvement. C'est pour cela que je gère mes mouvements en un seul appel avec plusieurs paramètres, et pour un appel comme
Quote
quickStepDeplacement1(3200 micro_pas, SENS_POSITIF, 6250 coups_d_horloges_par_pas, 1024 pas_pour_accelerer, 512 pas_pour_decelerer);
je peux difficilement trouver un nom qui décrit plusieurs paramètres.

Mettre l'unité dans la fonction est fait avec _delay_us_() et _delay_ms(), mais c'est très rare de le voir

J-M-L

C'est un peu pousser loin, je n'ai jamais vu cela dans tous les codes que j'ai pu lire, mais ça se défend et sans doute certains le pratiquent
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous


Quote
je n'ai jamais vu cela dans tous les codes que j'ai pu lire
Je n'ai jamais vu de commentaire par define comme je l'ai décrit. Il apparaitra dans ma bibliothèque QuickStep v2.0
La seule fois ou j'ai vu un define "vide" c'est pour du code.

Quote
certains le pratiquent
Si il s'agit du commentaire ordinaire, ce serait bien. Dans les bibliothèques, j'ai quasiment toujours vu des commentaires, mais dans les programmes de base, je suis loin de dire "certains" :smiley-grin:

68tjs

Vous ne pensez pas que c'est une discussion pour le bar ?
Ceux qui savent qu'ils ne savent rien en connaisse autant que ceux qui croient tout savoir et qui n'en connaissent pas plus qu'eux.
Pierre DAC.

lesept

A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).


Quote
Vous ne pensez pas que c'est une discussion pour le bar ?
Je le prends plutôt comme un tuto sur la possibilité que j'utilise de pouvoir mettre des unités. Mais j'y ai songé aussi.

Go Up