Tiret bas dans le code [Résolu]

cs_Jean_Jean 639 Messages postés dimanche 13 août 2006Date d'inscription 5 mai 2016 Dernière intervention - 9 sept. 2007 à 09:23 - Dernière réponse : florenth 1105 Messages postés dimanche 1 août 2004Date d'inscription 17 août 2008 Dernière intervention
- 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
Afficher la suite 

Votre réponse

17 réponses

f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 9 sept. 2007 à 20:38
+3
Utile
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] );
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de f0xi
florenth 1105 Messages postés dimanche 1 août 2004Date d'inscription 17 août 2008 Dernière intervention - 9 sept. 2007 à 20:39
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de florenth
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 9 sept. 2007 à 20:40
+3
Utile
pardon correction :

int _max(int a, int b) {
  int mx;
  mx = (a < b) ? a : b; // (condition) ? false : true :)
  return mx;
}
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de f0xi
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 9 sept. 2007 à 20:45
+3
Utile
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;
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de f0xi
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 9 sept. 2007 à 20:49
+3
Utile
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 :)
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de f0xi
cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention - 9 sept. 2007 à 11:01
0
Utile
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
Commenter la réponse de cs_cantador
cs_Jean_Jean 639 Messages postés dimanche 13 août 2006Date d'inscription 5 mai 2016 Dernière intervention - 9 sept. 2007 à 11:20
0
Utile
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
Commenter la réponse de cs_Jean_Jean
cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention - 9 sept. 2007 à 11:48
0
Utile
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
Commenter la réponse de cs_cantador
cs_Jean_Jean 639 Messages postés dimanche 13 août 2006Date d'inscription 5 mai 2016 Dernière intervention - 9 sept. 2007 à 20:44
0
Utile
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
Commenter la réponse de cs_Jean_Jean
cs_Jean_Jean 639 Messages postés dimanche 13 août 2006Date d'inscription 5 mai 2016 Dernière intervention - 9 sept. 2007 à 20:46
0
Utile
J'ai pas le temps de lire qu'affluent d'autres codes.
Commenter la réponse de cs_Jean_Jean
cs_Jean_Jean 639 Messages postés dimanche 13 août 2006Date d'inscription 5 mai 2016 Dernière intervention - 9 sept. 2007 à 20:47
0
Utile
Bon il va falloir que j'imprime, ça devient subil
Merci à tous
Commenter la réponse de cs_Jean_Jean
cs_Jean_Jean 639 Messages postés dimanche 13 août 2006Date d'inscription 5 mai 2016 Dernière intervention - 9 sept. 2007 à 20:55
0
Utile
on "Sufixe" les variables avec le type et on "prefixe" avec la portée :)
Oais, ça me plait bien!
Commenter la réponse de cs_Jean_Jean
cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention - 9 sept. 2007 à 23:24
0
Utile
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
Commenter la réponse de cs_cantador
florenth 1105 Messages postés dimanche 1 août 2004Date d'inscription 17 août 2008 Dernière intervention - 10 sept. 2007 à 18:40
0
Utile
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
Commenter la réponse de florenth
cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention - 10 sept. 2007 à 20:49
0
Utile
@florenth :

Borland, ni CodeGear ne sont des organismes pouvant instituer des Normes..
La preuve, regarde autour de toi, et tu  verras que bon nombre de programmeurs font ce qu'ils veulent en ce domaine.
et tu a vu aussi qu'il y a certaines limites..
Tout le monde souhaite pouvoir imposer un standard ....Mais...

Mais sur le principe, tu as raison..
Afin de mieux se comprendre, c'est souhaitable d'écrire tous de la même  façon..

Des programmeurs qui ne sont pas des petits nouveaux comme Colibri, tapent tout avec des underscores..
Tu sais c'est pas évident de changer de technique qd tu en utilises une depuis des années..
Alors que faire ?

Etre indulgent peut-être..

cantador
Commenter la réponse de cs_cantador
Cirec 4221 Messages postés vendredi 23 juillet 2004Date d'inscription 11 mai 2018 Dernière intervention - 11 sept. 2007 à 15:09
0
Utile
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" />
Commenter la réponse de Cirec
florenth 1105 Messages postés dimanche 1 août 2004Date d'inscription 17 août 2008 Dernière intervention - 11 sept. 2007 à 16:28
0
Utile
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
Commenter la réponse de florenth

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.