30

JackosKing-VNR :
> c'est pas bien niveau conception objet (foutrut de merde en perspective bonjour wink)

c'est pas trop le sujet ds ce topic, mais si tu arrives à trouver un défaut de modelisation sur 4 lignes qui ne définissent même pas une seule structure, pourquoi pas grin
Pollux
: Ben si, le fait que le jour où tu veux remplacer user.age par un calcul qui dépend de la date, tu devras tout convertir, c'est bien un point négatif... Evidemment, il y a des cas où tu écris du code juste pour une fois et ensuite tu le balances à la poubelle, dans ce cas-là c'est pas grave, mais je ne parle pas de ça ^^ (et je suppose que toi non plus)

Bah non je n'aurai pas tout à convertir, seulement dans le cas hautement improbable où tout à coup, manque de bol, j'ai besoin d'initialiser avec une variable externe qui se trouve avoir le même nom qu'un champ de ma structure, faut quand même le chercher (d'autant plus que la structure n'a pas évolué, et que donc c'est la variable qui est venue s'ajouter, ce qui signifie que j'ai volontairement ajouté une variable qui pose problème avec mon propre code ? non, géneralement j'évite de me mettre des batons dans les roues ^^)
Pollux :
Ben je suis désolé si tu penses ça, mais tout sucre syntaxique n'est pas bon à prendre. Et inversement, il y a plein de sucres syntaxiques qui ne tombent pas dans l'écueil du with, dans la mesure où il ne perdent pas de généralité : int i=0; while (i<42) { ...; i++; } -> for (int i=0;i<42;i++) ...;, ou bien replaceword($my_word,$value+1) -> s/\b$my_word\b/$value+1/e.

En gros pour toi, tout sucre syntaxique qui limite le domaine d'utilisation est bon à jeter ? Pour reprendre ton exemple du switch, l'extension qui consiste à pouvoir remplacer "case 1: case 2: case 3: case 4" par "case 1 ... 4:" est une abomination puisque si par hasard un jour je veux exclure le 3 de mes cas, il faut tout réécrire ? Après tout pourquoi pas, chacun son niveau de fanatisme, mais là aussi c'est un truc que j'utilise sans la moindre hésitation dès qu'il devient utile. Donc oui je pense que tout sucre syntaxique est bon à prendre, à partir du moment où il est raisonnable, et je préfere des écritures élegantes et lisibles à des blocs immondes mais évolutifs quand je sais que l'évolution en question n'a que très peu de chances d'arriver. Tu peux effectivement programmer de la façon la plus modulaire possible, et ne jamais reposer sur le fait qu'une portion de code risque de rester inchangée pendant longtemps... ...mais à quel prix sick
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

31

Ha mai smoi je me mettais dans un cadre programmation objet en C++.
setDate etc...

32

et je precise bien dans la parenthese avec une grosse faute: je suis un fouteur de merde wink

33

Zephyr
: Bah non je n'aurai pas tout à convertir, seulement dans le cas hautement improbable où tout à coup, manque de bol, j'ai besoin d'initialiser avec une variable externe qui se trouve avoir le même nom qu'un champ de ma structure, faut quand même le chercher (d'autant plus que la structure n'a pas évolué, et que donc c'est la variable qui est venue s'ajouter, ce qui signifie que j'ai volontairement ajouté une variable qui pose problème avec mon propre code ? non, géneralement j'évite de me mettre des batons dans les roues ^^)

Euh, tu as lu mon premier post ? sorry
Je ne parle pas du cas de figure où user.date existe et où tu essayes de rajouter une dépendance vers la variable date par la suite, je parle du cas contraire : tu utilises la variable date pour calculer user.age, ensuite 3 mois plus tard tu rajoutes le champ user.date dans un autre fichier, sans penser au fait que ça va complètement casser le calcul de user.age... Je veux dire, concrètement, comment est-ce que tu pourrais savoir que ça va casser confus A moins de rechercher le nom du champ dans *tout* ton programme à chaque fois que tu veux rajouter un champ, je vois pas comment tu fais confus (et même en faisant ça, si par hasard il y a du code qui n'est pas à toi et qui dépend de cette structure, c'est foutu...)
Bref, excuse-moi mais c'est vraiment loin d'être tiré par les cheveux embarrassed

Pollux :
Ben je suis désolé si tu penses ça, mais tout sucre syntaxique n'est pas bon à prendre. Et inversement, il y a plein de sucres syntaxiques qui ne tombent pas dans l'écueil du with, dans la mesure où il ne perdent pas de généralité : int i=0; while (i<42) { ...; i++; } -> for (int i=0;i<42;i++) ...;, ou bien replaceword($my_word,$value+1) -> s/\b$my_word\b/$value+1/e.
En gros pour toi, tout sucre syntaxique qui limite le domaine d'utilisation est bon à jeter ? Pour reprendre ton exemple du switch, l'extension qui consiste à pouvoir remplacer "case 1: case 2: case 3: case 4" par "case 1 ... 4:" est une abomination puisque si par hasard un jour je veux exclure le 3 de mes cas, il faut tout réécrire ?

Non, absolument pas ; remplacer "case 1 ... 4:" par "case 1 ... 2: case 4:", c'est raffiner une condition en lui donnant un sens différent. (de même que, je sais pas, "x+42" peut être raffiné en "x<0 ? 42 : x+42", c'est pas la preuve que "x+42" est pas bien)
Remplacer une constante numérique explicite par une variable ou une constante préprocesseur qui a la même valeur, c'est pas un raffinement, c'est quelque chose qui a exactement la même sémantique et devrait autant que possible être permis exactement aux mêmes endroits...
Donc oui je pense que tout sucre syntaxique est bon à prendre, à partir du moment où il est raisonnable, et je préfere des écritures élegantes et lisibles à des blocs immondes mais évolutifs quand je sais que l'évolution en question n'a que très peu de chances d'arriver. Tu peux effectivement programmer de la façon la plus modulaire possible, et ne jamais reposer sur le fait qu'une portion de code risque de rester inchangée pendant longtemps... ...mais à quel prix sick

Au prix de 5% de lisibilité perdue, dans le meilleur des cas oui (et avec un bloc With bien foutu comme celui de VB/FoxPro, tu ne les aurais même pas perdus, tu aurais juste usé un peu ta touche ".")

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

34

JackosKing-VNR :
Ha mai smoi je me mettais dans un cadre programmation objet en C++.
setDate etc...

Ca ne change pas grand-chose : with{} serait aussi applicable dans ce cas-là ^^
(et il y a des langages qui supportent une programmation objet propre même avec des "machin.bidule = truc" : C#, Ruby, etc...)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

35

GoldenCrystal :
tu peux faire ça avec des if/else ?
swhith (i) // int i
{
  case 1:
    j += 1;
    break;
  case 2:
    j = 1;
    goto case 1;
  case 3:
    return j;
}

Oui tu peux :

if (i == 1)
{
1: j +=1;
} 
else if ( i == 2)
{
 j = 1;
 goto 1;
}
else if ( i == 3)
{
return j;
}

(et on peu surement trouver mieux.)

Sinon :
swhith (i) // int i
{
  case 2:
    j = 1;

  case 1:
    j += 1;
    break;
  case 3:
    return j;
}


fait quand meme plus propre
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

36

Pollux
:
JackosKing-VNR :
Ha mai smoi je me mettais dans un cadre programmation objet en C++.
setDate etc...

Ca ne change pas grand-chose : with{} serait aussi applicable dans ce cas-là ^^
(et il y a des langages qui supportent une programmation objet propre même avec des "machin.bidule = truc" : C#, Ruby, etc...)

Oui mais... (si ca c'est pas de l'argument!).
Non mais (ops... vive la super réponse), pour une question de réutilisabilité du code etc.. (genre j'ai beaucoup d'arguments), il est préférable d'utiliser une méthode pour tout accès aux attributs d'une classe.

37

...Ne serait-ce que parce que les champs de base ne permettent aucun contrôle sur ce qui se passe, dans la plupart des projets, des champs publics dans une classe publique (publique au niveau du projet hein ^^) "ne servent à rien" oué, mais si ta classe est privée et ne te sert que de conteneur de données (de manière analogue à une structure), alors accéder a des champs est bien mieux, point de vue optimisation, qu'accéder à des propriétés/méthodes smile

Godzil > Moué alors exemple foireux tongue ... (Sinon, en C# le débordement des étquettes case n'est pas supporté, donc ta modificationde la fin marche que pour C/C++ tongue)
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

38

en gros si tu decides de changer la facons dont tu stoques une donnée ou dont tu veux la traiter, en utilisant une methode pour l'acces, cela permet de permet d'avoir une melleur abstraction.

39

Justement, en C#/VB/Ruby, ce n'est pas nécessaire, grâce aux propriétés ^^ (i.e. si machin.valeur était un champ tout bête, tu peux le transformer en propriété, et à ce moment-là une méthode spéciale sera appelée quand tu liras machin.valeur, et une autre méthode sera appelée quand tu écriras dedans smile et tu n'as aucun code à réécrire)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

40

Bon, par exemple (en C# mais le langage change peu de choses à ça)
public sealed class Foo
{
	private class Bar /* La classe est privée, elle n'est donc pas accessible de l'extérieur */
	{
		public int n1, n2, n3;
		public float v1, v2, v3;
	}

	private List<Bar> barList;

	Foo(int n)
	{
		barList = new List<Bar>;
		for (int i = 0; i < n; i++)
			barList.Add(new Bar());
	}

	/* code */
}

Là je définis une classe privée conteneur de données Bar dans une classe publique Foo... La classe Bar fait partie de Foo, donc l'abstraction ne sert a rien.
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

41

Pareil en C++/CLI, d'ailleurs...

Edit: Cross
Et pour info, le code de GoldenCrystal ne parle pas de propriétés.
avatar
Maintenant j'ai la flemme de garder une signature à jour sur ce site. Je n'ai même plus ma chaîne Exec sous la main.

42

je ne connais pas le C# ni le ruby. Enfin le poste de pollux m'en apprend un peu plus. Je parlais plutot de pascal et C++.
Je ne dis pas que l'abstraction doit etre fait dans 100% des cas, d'ailleur je précise que ct pour foutre la merde wink


43

Pollux :
tu utilises la variable date pour calculer user.age
3 mois plus tard tu rajoutes le champ user.date dans un autre fichier
Bref, excuse-moi mais c'est vraiment loin d'être tiré par les cheveux

Bah... si ? C'est moi qui vais devoir te renvoyer à mes posts, j'ai expliqué (plusieurs fois, en plus) pourquoi le "with" n'aurait justement pas du être utilisé dans le cas que tu viens d'inventer...
Non, absolument pas ; remplacer "case 1 ... 4:" par "case 1 ... 2: case 4:", c'est raffiner une condition en lui donnant un sens différent. (de même que, je sais pas, "x+42" peut être raffiné en "x<0 ? 42 : x+42", c'est pas la preuve que "x+42" est pas bien)

Ça revient "un peu" au même à mon sens, tu es revenu sur la ligne de départ pour la modifier, et abandonner la syntaxe plus lisible. D'ailleurs si ce genre de cas devait arriver trop souvent, ça ne prouverait qu'une chose : jamais il n'aurait fallu utiliser une telle syntaxe à cet endroit du code. Par contre tu reparles de tes variables/constantes que j'ai volontairement ignorées puisque ça me semblait assez loin du sujet, et je dois dire que c'est de plus en plus le cas... (ce n'est définitivement pas un sucre syntaxique)
Au prix de 5% de lisibilité perdue, dans le meilleur des cas

Un détail : 5% de lisibilité par syntaxe que tu refuses d'utiliser, ce qui peut devenir assez énorme si on "s'amuse" (non je ne compte pas le faire ^^) à les compter...
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

44

Zephyr
:
Pollux :
tu utilises la variable date pour calculer user.age
3 mois plus tard tu rajoutes le champ user.date dans un autre fichier
Bref, excuse-moi mais c'est vraiment loin d'être tiré par les cheveux
Bah... si ? C'est moi qui vais devoir te renvoyer à mes posts, j'ai expliqué (plusieurs fois, en plus) pourquoi le "with" n'aurait justement pas du être utilisé dans le cas que tu viens d'inventer...

Ah, bien, tu réaffirmes bien que tu ne considères pas le cas où tu dépends de variables externes, mais à ce moment-là je ne comprends plus du tout le 2è paragraphe de ./30 confus
Je veux dire, tu n'utilises *jamais* de variables externes avec with, on est bien d'accord ? Dans ce cas-là ma phrase
le jour où tu veux remplacer user.age par un calcul qui dépend de la date, tu devras tout convertir

est bien correcte pour toi, non ? (i.e. comme tu ne peux/veux pas utiliser de variables externes dans le with, tu dois convertir le with(user) en user.truc)

Non, absolument pas ; remplacer "case 1 ... 4:" par "case 1 ... 2: case 4:", c'est raffiner une condition en lui donnant un sens différent. (de même que, je sais pas, "x+42" peut être raffiné en "x<0 ? 42 : x+42", c'est pas la preuve que "x+42" est pas bien)
Ça revient "un peu" au même à mon sens, tu es revenu sur la ligne de départ pour la modifier, et abandonner la syntaxe plus lisible. D'ailleurs si ce genre de cas devait arriver trop souvent, ça ne prouverait qu'une chose : jamais il n'aurait fallu utiliser une telle syntaxe à cet endroit du code.

Oui, et alors ? Je vois pas où tu veux en venir...
Par contre tu reparles de tes variables/constantes que j'ai volontairement ignorées puisque ça me semblait assez loin du sujet, et je dois dire que c'est de plus en plus le cas... (ce n'est définitivement pas un sucre syntaxique)

Comprends rien confus Le problème du with de PHP (que n'a pas le with de VB/FoxPro), c'est les variables externes que tu ne peux pas utiliser de façon sûre dedans, donc tu es obligé de te restreindre aux constantes littérales ^^ Je ne vois pas en quoi c'est loin du sujet, c'est même le coeur du problème...

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

45

Justement, en C#/VB/Ruby, ce n'est pas nécessaire, grâce aux propriétés ^^
C'est aussi quelque chose qui existe en C++, la plupart du temps en faisant appel à un second niveau de preprocessing (par exemple le moc de Qt, ou les VCL/CLI de Borland).
Je trouve même que l'implémentation est plutôt appropriée, le truc consistant à remplacer la lecture d'un membre par un appel de fonction étant plus proche selon moi d'une macro que d'une réelle modification du langage.

46

Moi je préfère que ce soit fait au niveau langage.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

47

pencil

48

Euh...tu pourrais au moins donner une raison ?
Parce que sinon suffisait de faire un sondage ^^ cheeky

49

Depuis quand on doit justifier un argument sur yaronet? wink

Pour moi ce n'est qu'une question de gout. Je prefere faire gérer cela par le langage lui meme, cela évite une surcouche. Surtout quand tu genères du code à la volée, et qu'il y a deja un bon nombre de surcouches etc...
(J'ai pas dit que c'etait un bon argument, mais c'est mon point de vue)

50

Ben il ne s'agissait pas de le justifier, mais de le donner déjà cheeky
Même pour troller, il faut donner des arguments. Bidons certes, mais il faut quand même les donner.

51

Enfin il faut bien voir que ce n'est pas un préprocesseur tout bête comme le préprocesseur C, qui se contente de lire le code token par token et ne voit pas la différence entre du C89, du C99 ou du C++ ^^ c'est un vrai parseur exactement comme dans un compilateur, qui doit vraiment connaître la structure du langage, connaître tous les types de données de toutes les expressions, etc... Et en plus, il faut inliner tous les templates si on veut que du code style template<T> f(const T& x){return x.length;} passe quand length est une propriété ^^ (et qui dit inlinage de template dit capacité à simplifier des expressions portant sur des entiers oui)
Bref, c'est plutôt un compilateur C++ étendu vers C++ normal qu'un préprocesseur smile


(et accessoirement, std::swap(object.property1,object.property2) se comporte comme std::swap(object.getProperty1(),object.getProperty2()), qui ne fait rien du tout ; c'est assez casse-gueule, quand-même... et ça veut dire qu'on ne peut pas transformer un champ en propriété sans risquer de casser silencieusement quelque chose sorry le C# est nettement mieux de ce point de vue-là, puisque fonction(ref object.property) ne passe pas ^^)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

52

spectras> Je trouve ça plus propre que ce soit intégré au langage. C'est subjectif smile
Je vois les macros un peu comme un bricolage.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

53

Pollux :
Ah, bien, tu réaffirmes bien que tu ne considères pas le cas où tu dépends de variables externes, mais à ce moment-là je ne comprends plus du tout le 2è paragraphe de ./30 confus
Je veux dire, tu n'utilises *jamais* de variables externes avec with, on est bien d'accord ? Dans ce cas-là ma phrase
le jour où tu veux remplacer user.age par un calcul qui dépend de la date, tu devras tout convertir
est bien correcte pour toi, non ? (i.e. comme tu ne peux/veux pas utiliser de variables externes dans le with, tu dois convertir le with(user) en user.truc)

Heu oui et non, elle est incorrect dans le sens ou "le jour où" n'est pas censé arriver, sinon il n'aurait pas fallu utiliser de with à cet endroit.
Oui, et alors ? Je vois pas où tu veux en venir...

J'en "viens" nulle part hein, j'ai pas changé d'avis depuis le début ^^ Juste que j'ai du mal à comprendre l'interet de ta première réponse qui a été "tu devras pê revenir sur ce code pour le changer", puisque oui dans tous les cas il aurait changé, et si pour toi c'est un problème, alors il n'y a pas que le with qui est à bannir...
Comprends rien confus Le problème du with de PHP (que n'a pas le with de VB/FoxPro), c'est les variables externes que tu ne peux pas utiliser de façon sûre dedans, donc tu es obligé de te restreindre aux constantes littérales ^^ Je ne vois pas en quoi c'est loin du sujet, c'est même le coeur du problème...

Awé je savais même pas qu'on parlait de php en fait... D'ailleurs je savais même pas qu'il y avait un with en php. Mais heu nan là je ne parle pas d'un langage en particulier, donc si c'est un problème lié au php et uniquement à lui (flemme de relire les posts précedents,) c'est aussi hors sujet.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

54

Zephyr
:
Pollux :
Ah, bien, tu réaffirmes bien que tu ne considères pas le cas où tu dépends de variables externes, mais à ce moment-là je ne comprends plus du tout le 2è paragraphe de ./30 confus
Je veux dire, tu n'utilises *jamais* de variables externes avec with, on est bien d'accord ? Dans ce cas-là ma phrase
le jour où tu veux remplacer user.age par un calcul qui dépend de la date, tu devras tout convertir
est bien correcte pour toi, non ? (i.e. comme tu ne peux/veux pas utiliser de variables externes dans le with, tu dois convertir le with(user) en user.truc)
Heu oui et non, elle est incorrect dans le sens ou "le jour où" n'est pas censé arriver, sinon il n'aurait pas fallu utiliser de with à cet endroit.

Comment tu peux savoir à l'avance si tu devras rajouter ou non des champs à 'user', ou qu'une constante entière devra ou non être configurable par la suite ? confus
Awé je savais même pas qu'on parlait de php en fait... D'ailleurs je savais même pas qu'il y avait un with en php. Mais heu nan là je ne parle pas d'un langage en particulier, donc si c'est un problème lié au php et uniquement à lui (flemme de relire les posts précedents,) c'est aussi hors sujet.

Ben je sais pas, t'utilisais une syntaxe style PHP pour les chaînes de caractères, ça parlait d'utilisateurs et d'identifiants (un scénario web classique), et comme en plus tu as fait pas mal de sites en PHP, j'ai cru que c'était du PHP, ôtant pour moi... (menfin c'est vrai que je crois pas qu'"end" existe en PHP, non ?)
Bref, si la construction que tu défends ardamment comme étant résolument indispensable n'est implémentée dans aucun langage, ça ne fait qu'appuyer ton argumentaire déjà magistral cheeky Et je persiste à croire qu'implémentée comme tu le suggères avec collision des namespaces, ce serait une feature très chiante et bien moins utile que celle de VB/FoxPro ^^

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

55

Pollux :
Comment tu peux savoir à l'avance si tu devras rajouter ou non des champs à 'user', ou qu'une constante entière devra ou non être configurable par la suite ? confus

"modélisation objet" ?
enfin après ça dépend de la méthode, mais perso j'évite de me lancer corps et ame, à ajouter des champs n'importe comment aux objets, etc; et c'est *très* rare d'avoir à en ajouter qui n'étaient pas prévus au départ.
Ben je sais pas, t'utilisais une syntaxe style PHP pour les chaînes de caractères, ça parlait d'utilisateurs et d'identifiants (un scénario web classique), et comme en plus tu as fait pas mal de sites en PHP, j'ai cru que c'était du PHP, ôtant pour moi... (menfin c'est vrai que je crois pas qu'"end" existe en PHP, non ?)

Erf... j'essayais de prendre une syntaxe qui avait peu de chances d'exister quelque part, on dirait que c'est raté :/
Non en fait le seul langage dans lequel j'utilise pas mal "with", c'est le Delphi, et la syntaxe n'est pas tt à fait celle-ci (par contre elle n'a pas la tronche de celle de VB qui lui évite l'ambiguïté).
Bref, si la construction que tu défends ardamment comme étant résolument indispensable n'est implémentée dans aucun langage, ça ne fait qu'appuyer ton argumentaire déjà magistral cheeky Et je persiste à croire qu'implémentée comme tu le suggères avec collision des namespaces, ce serait une feature très chiante et bien moins utile que celle de VB/FoxPro ^^

Bah au moins le Delphi comme je viens de dire; et comme à mon avis les petits gars de chez Borland qui bossent dessus son "un tout petit peu" plus qualifiés que nous pour juger de ce qui doit ou pas figurer dans leur langage, c'est plutôt à eux que j'aurais tenance à faire confiance grin

[edit] la syntaxe exacte en Delphi ressemble à ça :
with objet do
begin
   attribut_a := 50;
   attribut_b := 'plop';
   methode_a ();
   methode_b (17);
end;
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

56

Ah oui effectivement Pascal avait un 'with' comme ça smile Tiens, c'est marrant, le standard Pascal fait même pas 100 pages ^^ Mais bon, excuse-moi mais c'est pas comme si Pascal était une référence en terme de langage bien conçu, hein cheeky (bon, ça a été en grande partie corrigé par Delphi, je suis bien d'accord, mais je veux dire que ton argument d'autorité à propos des concepteurs de Pascal ne vaut pas grand-chose ^^)

Zephyr
:
Pollux :
Comment tu peux savoir à l'avance si tu devras rajouter ou non des champs à 'user', ou qu'une constante entière devra ou non être configurable par la suite ? confus

"modélisation objet" ? enfin après ça dépend de la méthode, mais perso j'évite de me lancer corps et ame, à ajouter des champs n'importe comment aux objets, etc; et c'est *très* rare d'avoir à en ajouter qui n'étaient pas prévus au départ.

Pour reprendre l'exemple de l'utilisateur avec des propriétés, c'est certain que yAro n'a *jamais* dû rajouter de champs aux profils yN parce qu'il avait tout bien conçu dès le départ oui

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

57

Je dois dire que ça ne me serait jamais venu à l'idée de faire un with qui pollue le namespace comme celui de delphi.
Mais tel qu'il est en VB/FoxPro c'est très bien je trouve, et faut le faire exprès pour trouver le code difficile à lire à mon avis, surtout qu'un with c'est en général un tout petit bloc tongue
Ensuite si tu nommes tes variables correctement, les collisions n'ont aucun risque d'arriver. En respectant les conventions de nommage on n'aurait jamais eu '.size = size', mais plutôt '.nSize = lnSize'. Pareil pour les variables globales ^^

Sinon tant qu'on y est y'a un truc que j'aimerais bien comprendre en C++ (je vais pas ouvrir un nouveau topic juste pour ça), si on surcharge une classe et qu'on veut appeler la classe de base depuis une méthode surchargée, on doit faire: 'MaClasseDeBase::MaMethodeDeBase(...)' non? Ou bien j'ai loupé quelque chose? smile
Pour reprendre l'exemple du foxpro on fait 'dodefault(...)' à la place, et j'avoue que j'ai bcp de peine à comprendre l'intérêt de la syntaxe du C++ (et des autres langages qui font pareil), d'autant que le '::' est un cas spécial puisque normalement c'est pour les méthodes statiques si j'ai bien compris, alors que là pas... confus
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

58

si on surcharge une classe et qu'on veut appeler la classe de base depuis une méthode surchargée, on doit faire: 'MaClasseDeBase::MaMethodeDeBase(...)' non?
Ca dépend de ce que tu veux faire exactement. Mais oui, ça marche.
le '::' est un cas spécial puisque normalement c'est pour les méthodes statiques si j'ai bien compris,
T'as mal compris wink
Le :: est l'opérateur de résolution de portée. Il permet de naviguer dans l'arborescence d'espaces de noms.

59

Ensuite si tu nommes tes variables correctement, les collisions n'ont aucun risque d'arriver. En respectant les conventions de nommage on n'aurait jamais eu '.size = size', mais plutôt '.nSize = lnSize'. Pareil pour les variables globales ^^

Sachant qu'il existe presque 1 convention de nommage par boite etc... c'est pas forcement un bon argument wink

60

-presque +au moins grin