Pourquoi passer un pointeur sur un objet

Soit une méthode qui ajoute une propriété “prop2” au paramètre $1 objet et en supprime la propriété “prop3” si elle est présente :
<code 4D>
//ObjetModifier (obj_o)
C_OBJET($1;$par1_o)
$par1_o:=$1
Si (Non(OB Est défini($par1_o)))
//la ligne ci-dessous ne sert à rien car l’objet
//doit être défini par l’appelant…
$par1_o:=JSON Parse("{}")
Fin de si
Si (OB Est défini($par1_o;“prop3”))
OB SUPPRIMER($par1_o;“prop3”)
Fin de si
OB FIXER($par1_o;“prop2”;2)
</code 4D>

Puis on lui fait subir quelques tests :
<code 4D>
C_OBJET($obj_o)
//test 1
EFFACER VARIABLE($obj_o) //objet indéfini
OB FIXER($obj_o;“prop1”;1)
OB FIXER($obj_o;“prop3”;3)
ObjetModifier ($obj_o)
ASSERT(OB Est défini($obj_o;“prop1”))
ASSERT(OB Est défini($obj_o;“prop2”))
ASSERT(Non(OB Est défini($obj_o;“prop3”)))
//test 2
EFFACER VARIABLE($obj_o) //objet indéfini
$obj_o:=JSON Parse("{}") //objet vide
ObjetModifier ($obj_o)
ASSERT(Non(OB Est défini($obj_o;“prop1”)))
ASSERT(OB Est défini($obj_o;“prop2”))
//test 3
EFFACER VARIABLE($obj_o) //objet indéfini
ObjetModifier ($obj_o;Vrai)
ASSERT(Non(OB Est défini($obj_o;“prop1”)))
ASSERT(Non(OB Est défini($obj_o;“prop2”)))
</code 4D>

Autrement dit, une méthode peut modifier un paramètre objet à condition que cet objet ne soit pas indéfini dans l’appelant (d’où l’intérêt de la fonction http://doc.4d.com/4Dv16R5/4D/16-R5/Creer-objet.301-3482122.fr.htmlCréer objet>).

C’est rigolo de pouvoir modifier une variable par une méthode, sans pointeur ni fonction $0, non ?

PS
Tout était beau dans le http://doc.4d.com/4Dv16R5/4D/16-R5/Objets-Langage.201-3480807.fr.htmlchapitre objet> : OB truc, OB machin, OB bidule. Pour la fonction qui passe un objet de déclaré à défini, il suffisait de mettre OB kekchoz (créer, définir ou autre). Bin non, il a fallu qu’ils :poop: le chapitre avec ce :skull_and_crossbones: verbe au début : Créer objet. Pas étonnant qu’on code comme des :pig:.

L’objet étant géré via une référence, ça semble normal, c’est en lui même un pointeur…

Il en est de même pour les menus, les listes hiérarchiques, etc…

Sinon, j’approuve totalement ton PS, c’est horripilant ! :roll:

: Arnaud DE MONTARD

PS
Tout était beau dans le chapitre objet : OB truc, OB machin, OB
bidule. Pour la fonction qui passe un objet de déclaré à défini, il
suffisait de mettre OB kekchoz (créer, définir ou autre). Bin non, il
a fallu qu’ils :poop: le chapitre avec ce :skull_and_crossbones: verbe au début : Créer
objet. Pas étonnant qu’on code comme des :pig:.

En cours de beta test la commande a été créée OB New et au finish renommer Créer objet afin d’être cohérente avec…créer collection, etc.

Le post du http://forums.4d.com/Post/FR/19313696/1/19313697beta test> du 19/4/17

Oui, je pense qu’il y a une certaine similitude entre objet et pointeur. Probablement un lien avec le titre de la conférence de Vanessa et Laurent E. : “Les objets ne sont pas du JSON”.

Moi j’aurais dit OB define/OB definir, puisque ça définit l’objet. Et OB collection creer, puisque ça créé une collection qui demeure avant tout un objet.

De l’art de transformer en capharnaüm un langage parfaitement structuré. :evil:

Bonjour,

: Arnaud DE MONTARD

… puisque ça créé une collection qui demeure avant tout un objet.

NON !
Une collection n’est pas un objet ! Cela n’a rien à voir.
Pour en être persuadé, il suffit de venir à la post-classe du Summit que nous préparons Laurent Ribardière, Jean-Pierre Ribreau et moi-même.

Oui, le nom de la commande New object à un sens (Créer Objet en FR). Il y a effectivement New collection qui arrive, mais il y en aura d’autres par la suite. Il faut bien être persuadé que les noms des commandes ne sont pas choisis au hasard …

Cordialement,

Je ne suis pas persuadé qu’il sont choisis par hasard, par contre je le suis que
• mettre un verbe au début est une première ânerie
• ne pas mettre un intitulé de chapitre en préfixe en est une seconde

Qu’est-ce que ça coûtait de faire OB creer/OB new ou OB definir/OB define ? Plus encore si ce verbe semble choisi plus ou moins au hasard parmi une liste de synonymes improbables dont la traduction épouvantera les adeptes du langage fr. Faudra pas vous étonnez s’ils font de la résistance pour passer à l’us, on rame déjà dans le fr.

On a l’impression que les gens qui nomment les commandes chez 4D pensent benoitement que le commun des codeurs connaît par cœur le nom de plus d’un millier de commandes dont les mots sont ordonnancés à la va comme je te pousse. Bin non : moi qui utilise 4D depuis un bail, je peux mémoriser tant bien que mal 75 chapitres. Explique moi, alors que je suis en train de coder et que je sais que la commande existe, comment ne pas régulièrement perdre mon temps dans la doc simplement parce que vos règles de nommage n’obéissent à rien de prévisible.

As-tu déjà entendu quelqu’un de sensé se plaindre quand le chapitre des web services a été préfixé “ws…” ? Ronchonner que LISTBOX en préfixe ne sert à rien ? Te dire qu’il arrêtera 4D si SEND PACKET devenait PACKET SEND ? Que READ PICTURE FILE est beaucoup plus clair que PICTURE FILE READ ?

Bonjour,

Supposons que l’on fasse OB New Objet, que fait-on pour les collections ? Il n’y a pas de thème de commande collection car les collections se manipulent par des members fonctions et non des commandes.
Les choix de nom des nouvelles commandes sont pensés pour ce qui arrive, pas pour ce qui est déjà là.

Je code en FR, pour faire les expertises des clients français, mais en v17 je ne coderai plus et ne montrerais plus que du code en EN.

Cordialement,

Désolé mais je ne vois aucune logique là-dedans.
Pourquoi OB new object ? OB new suffit !
Pourquoi new ou créer quand le debogueur parle de undefined ??
Quand à la collection, je ne vois pas ce qui vous empêche de faire Collection define si ce qui est primordial (=ce qui vient en premier) est collection.
Au lieu de ça, non content de faire un mauvais choix pour la collection, on a étendu ce mauvais choix à l’objet ?

Autant j’apprécie la façon dont le langage 4D est conçu et la saisie dans l’éditeur de code, autant je râle de voir à quel point une mauvaise façon de nommer les commandes rend ce travail inopérant. Programmer une http://doc.4d.com/4Dv16R5/4D/16-R5/List-Box.201-3480785.fr.htmllistbox> est aussi agréable qu’il est insupportable de programmer une http://doc.4d.com/4Dv16R5/4D/16-R5/Listes-hierarchiques.201-3480813.fr.htmlliste hiérarchique>. Bonjour les aller retour dans la doc.

Bonjour,

Tu ne vois pas la logique car tu restes bloqué sur ta logique de nommage.
Ce que tu ne vois pas à ce jour c’est l’évolution qui se prépare, et c’est bien normal car tu n’as pas encore assisté aux conférences du summit …
Bref, d’ici la fin du mois tu comprendra peut-être mieux pourquoi on a, de façon tout à fait logique et cohérente :

  • New object
  • New collection
  • New …

Cordialement,