Tiret bas dans le code

Résolu
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 - 9 sept. 2007 à 09:23
florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 - 11 sept. 2007 à 16:28
Bounjour,

Une bonne âme pourrait-elle me dire pourquoi, on trouve du code avec des tirets-bas devant les variables ou les fonctions?
Exemple : Var _parameters : AnsiString;
Merci à vous
jean_Jean

16 réponses

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
9 sept. 2007 à 20:38
la plupart du temps le underscore "_" est usité en C/C++.
devant un nom de variable/fonction elle permet de differencier un element public d'un element public-privé ou public-a utilisation interne.

exemple :

int _max(int a, int b) {
  int mx;
  mx = (a > b) ? a : b;
  return mx;
}

int tri_max(int a, int b, int c) {
  return _max(a, _max(b, c));
}

pour _max() on place le _ avant pour dire qu'elle est utilisée par une autre fonction.
pour tri_max() on le met entre tri et max parce qu'en C/C++ on utilise pas trop l'ecriture en dos de chameau.

maix c'est surtout une histoire de convention, selon si le langage est case sensitive ou pas.

exemple :

action script, c/c++, javascript, php : sincos <> SinCos
pascal, delphi : sincos = SinCos

en gros en delphi on utilise rarement underscore (sauf traduction d'un code C/C++ ou autre) et on l'utilise plus en C/C++ et autres langages.
et si on compare une api pur delphi d'une api pur C/C++ on trouvera toujours ce genre de differences :

#define [type] UNE_CONSTANTE_TRUC valeur
void ma_fonction_cool( [arguments] ) { ... }

const  UneConstanteTruc [: type] = valeur ;
procedure MaFonctionCool( [arguments] );
3
florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 3
9 sept. 2007 à 20:39
Salut !

Comme je l'ai dit dans un commentaire de source, le "_" en début de variable, ne sert à rien. A part gêner !

Certains aiment préfixer les variables locales en fonction du type:
var
  INombre: Integer;
  SNom, SPrenom: string;

A la limite certes, ça peut être utile.

Perso, je préfixe les variables dans les déclarations de classe avec "F", comme voulu par CodeGear
type
  TMyClass =  class
    FNombre: Integer;
    FNom: string;
  end;

Tu peux aussi mettre "G" devant les globales.
var
  GMonSingleton: TObject = nil;
  GAppPath: string;

Mais sinon, les l'underscore ne sert à rien.

@Cantador:
"et les variables ramassées sont plus courtes d'où un gain de place mémoire.."
=> faux puisque le fichier généré (l'exécutable) ne contient pas le nom des variables.
Si tu parles du fichier source, ok, mais bon, on n'est pas à quelques Ko près.

++

Ressources Delphi, sources, tutoriaux, actu, ...: www.mx-dev.nethttp://te%3C/body
3
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
9 sept. 2007 à 20:40
pardon correction :

int _max(int a, int b) {
  int mx;
  mx = (a < b) ? a : b; // (condition) ? false : true :)
  return mx;
}
3
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
9 sept. 2007 à 20:45
petite erratum au message de flo :

on "Sufixe" les variables avec le type et on "prefixe" avec la portée :)

private
  FPointI : TPointInt;
  FPointF: TPointFloat;
published
  property PointI : TPointInt ...
  property PointF : TPointFloat ...
end;
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
9 sept. 2007 à 20:49
par contre je confirme les dires de Flo a propos de la taille en memoire...

le code source peut faire 50Mo et l'executable pourrat ne faire que 100Ko et utiliser 1Mo de RAM.

exemple concret avec l'api windows qui fait 1.15Mo, SysUtils 470Ko, Classes 293Ko ...

pourtant au final le prog ne fait pas 1.913 Mo :)
3
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
9 sept. 2007 à 11:01
C'est juste une convention d'écriture :

ex : JaimeLePoisson, J_aime_Le_Poisson : String;

Les deux fonctionnent, bien sûr..Certains ne jurent que par la deuxième formule
qui facilitent néanmoins l'écriture des mots en clair. (ex : Colibri)

cantador
0
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 3
9 sept. 2007 à 11:20
Merci Cantador pour ta réponse,
Dans le cas présent, le fait de commencer par un tiret bas, je ne trouve pas que ça éclarci beaucoup l'écriture.
Certes, j'utilise souvent ce que tu dis au milieu des mots, mais devant?
Est-ce que ça ne serait pas une question de code temporaire en cours de développement ou qlq chose comme ça?
Bien à toi
Jean_jean
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
9 sept. 2007 à 11:48
Non, à ma connaissance, je ne le pense pas et personnellement, j'utilise peu les
tirets bas car pour ma part, je trouve que c'est plus facile à lire sans :

Ex : DataSetEnCours à la place de DataSet_En_Cours

et les variables ramassées sont plus courtes d'où un gain de place mémoire..

cantador
0
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 3
9 sept. 2007 à 20:44
Merci Foxi pour toutes ces précisions.
ça éclaire ma lanterne.
Bon, je voulais savoir s'il fallait que je récrive tout, tu me rassure.
A+
Jean_Jean
0
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 3
9 sept. 2007 à 20:46
J'ai pas le temps de lire qu'affluent d'autres codes.
0
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 3
9 sept. 2007 à 20:47
Bon il va falloir que j'imprime, ça devient subil
Merci à tous
0
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 3
9 sept. 2007 à 20:55
on "Sufixe" les variables avec le type et on "prefixe" avec la portée :)
Oais, ça me plait bien!
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
9 sept. 2007 à 23:24
Je confirme, la taille des variables n'influent pas sur la taille de l'exécutable..
j'ai mal dit c'était simplement l'encombrement du source...
Car certains se plaisent à écrire des variables à rallonge comme si c'était des phrases :
ex : TTable_des_Utilisateurs_du_Forum_de_DelphiFr _Gna_Gna_Gna
etc..

je ne pense pas que quelque chose soit normalisée en ce domaine..


L'essentiel est d'avoir sa propre convention d'écriture et de s'y tenir
sauf bien sûr si on bosse en réseau avec d'autres..


qu'en pensez-vous ?




cantador
0
florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 3
10 sept. 2007 à 18:40
Ok f0xi pour les suffixes.
Je disais juste que j'ai vu bon nombre de codes qui préfixaient avec le type. D'où ma remarque: c'est idiot.

Pour TRectI et TRectF, ok car il y a deux types possibbles en fonction des données (entier ou flottant).
Mais écrire NomS, PrenomS, ça n'a pas d'intérêt... le nom étant rarement autre chose qu'une chaîne (Ansi ou Wide certes, mais là, c'est du chipotage).
Et puis, si tu as une variable Test: TTestCase.
Tu la suffixe, ça te donne TestT: TTestCase. Conclusion: t'es pas plus avancé !

"je ne pense pas que quelque chose soit normalisée en ce domaine.."
> Et bien détrompe-toi, borland de son temps à publié un guide de conventions de syntaxe.
C'est maintenant sur le site de CodeGear qu'il faut chercher: http://dn.codegear.com/article/10280
A posséder absolument dans les favoris.

"L'essentiel est d'avoir sa propre convention d'écriture et de s'y tenir
sauf bien sûr si on bosse en réseau avec d'autres.."
> Maintenant que tu connais la convention "officielle", tu es bien d'accord que c'est plus vers celle-là qu'il faut se tourner, non ?

Ressources Delphi, sources, tutoriaux, actu, ...: www.mx-dev.nethttp://te%3C/body
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
11 sept. 2007 à 15:09
Borland édite des conventions mais ne s'y tiens pas

Exemple:

// INCORRECT
if A < B then DoSomething; (Utilisé par Borland dans ses sources)

// CORRECT
if A < B then
DoSomething;

Autre Exemple:

// INCORRECT
for i := 0 to 10 do begin (Utilisé par Borland dans ses sources)

  DoSomething;
DoSomethingElse;
end;

// CORRECT
for i : = 0 to 10 do
begin
DoSomething;
DoSomethingElse;
end;

Et il en existe d'autre
 

* Nous aussi nous utilisons les mêmes syntaxes incorrectes aux yeux de Borland : <dd>qui je le rappel les utilises aussi. * Ce qui reviens à dire ... faites ce que je dis pas ce que je fais :

Le jour ou les donneurs de leçons appliqueront leurs commandements je prendrais leurs recommandations
un peut plus au sérieux

 
@+
Cirec

<hr size="2" />
0
florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 3
11 sept. 2007 à 16:28
lol Cirec !
C'est sûr que vu de ce côté là...

Certes CodeGear n'est pas un organisme de "standardisation"*** mais comme c'est l'héritier de la communauté "officielle" de Delphi, il fait plus le "poids" face aux autres.
En plus, je trouve leur recommandation très juste puisque tout est vu dans une optique de lisibilité et d'unicité.

Après, sur certains points comme le rappelle Cirec, il peut y avoir quelques dérogations, mais l'important, c'est de respecter une logique visant à "faire-au-plus-lisible-sans-se-casser-la-tête-pour-autant".
(Et sans se dire "pourquoi je le ferai puisque lui ne le fait pas ?")

Bien sur qu'il faut aussi être indulgent, mais je trouve que l'effort vient toujours du même côté, c'est tout.
Au moins, chez Colibri, on comprend parfaitement ce qu'il écrit.
Et si ça te plaît pas: tu as toujours des "reformateurs" de code.

Voila tout est dit et puis tout le monde semble d'accord en plus.

***: j'ai encore pas compris comment un organisme pouvait se déclarer "de standardisation". Ca voudrait dire qu'il s'auto-proclame le droit de dire ce qu'il faut faire ou non... mais de quel droit, justement ?
Suffit de regarder le travail de l'ISO, remarquable mais contestable aussi.
Et puis l'OASIS, l'ECMA, alors ?
Sans compter ce fameux W3C qui, au lieu d'avancer le "standard" html, ralentit son développement.

Nan bref, standard est un mot qui n'a aucun sens. En aura-t-il un jour ?
[hs]Je vous rappelle que Microsoft était "standard" aussi, à une certaine époque, mais que ça décline, comme tout, car ça n'a aucun sens./hs

Ressources Delphi, sources, tutoriaux, actu, ...: www.mx-dev.net
0
Rejoignez-nous