06-06-2015, 10:43 AM
(06-06-2015, 09:37 AM)Xenos a écrit : Tu changes de discours comme de chemise: East c'était censé être bien parce que ça laisse la liberté aux objets de faire d'autres trucs ("je te fais confiance pour") et maintenant, West c'est pourri parce que les objets peuvent faire tout et n'importe quoi comme ils le souhaitent...Non West c'est pourris car il n'y a aucune règle et bien souvent en West une partie de l'algo de l'objet est en dehors de lui et bien souvent une modification de code interne d'un objet en West doit avoir connaissance du monde qui l'utilise.
(06-06-2015, 09:37 AM)Xenos a écrit : Au début tu nous dis "West c'est pourri car je suis obligé de retrourner un truc précis: si je veux retourner des chips au lieu de l'or je peux pas", on te montre que PHP n'ayant pas de retour typé, tu peux retourner ce que tu veux et du coup ça devient "West c'est nul parce que le retour est pas typé donc je peux faire n'importe quoi" et même quand on te souligne que en PHP7, tu pourras facultativement typer tes retours (donc forcer un typage à un endroit parce que tu le veux et ne pas le forcer à un autre), ça te convient encore pas.Non c'est nul parce que tu es obligé de retourner une valeur alors que par moment tu ne veux pas le faire et faire une action qui n'est pas en rapport direct à ton getter au sens ou le getter est censé donner une donnée. Et si tu types le retour tu ne pourras toujours que retourner des chips, en East même avec le retour typé (qui sera self) tu pourras donner des chips, des patates ou ce que tu veux, et tout sera typé. Puisque tu ne retournes pas une donnée tu envoies un message au format attendu par le récepteur. Donc tout ce que le récepteur accepte tu peux lui envoyer.
(06-06-2015, 09:37 AM)Xenos a écrit : T'as une dépendance circulaire, t'as juste (encore une fois) pas envie de l'admettre. PHP étant plus souple à ce niveau que d'autres langages (comme le C++), cela n'entraîne pas de problème majeur, mais (histoire de sortir de la zone de confort ), essaie-toi à faire le même code en C++, et tu verras: tu auras besoin d'une forward declaration. Et je me demande même si l'auto-complétion ne va pas sauter avec cette forward declaration.Dépendance circulaire peux être, référence circulaire non. En Scala ça pose aucun soucis, donne un bout de code en C++ que je test et on verra.
(06-06-2015, 09:37 AM)Xenos a écrit : Alan n'a pas eu tort au départ puisqu'il voulait copier la biologie. Or, dans la bio, la cellule ne fixe pas le destinataire du message. Dès lors, la notion de return est impossible (le return, c'est un message qui part de l'appelé et va vers l'appelant). C'est pas ce que t'as en PHP puisque tu fixes le destinataire du message. C'est donc au niveau du langage que tu veux changer les choses, pas au niveau du code. D'autant plus si tu parles du fait que East oblige à des pirouettes à cause du langage. C'est donc bien un principe de langage et non de code (l'OO est un langage d'ailleurs, pas une façon de coder).J'appelle ça une pirouette car intellectuellement tu admets pas que je dois faire getter sur un valueObject, ou une interface composé parce que le langage sait pas faire d'union de type. Il a pris comme modèle de départ la biologie, il n'a pas eu pour but de la copier exactement, sinon la POO serait de la programmation en réseau de neurones ce qui n'est pas du tout le cas.
(06-06-2015, 09:37 AM)Xenos a écrit : Et accessoirement, en bio, il y a le même ADN dans toutes les cellules (sauf reproductrices ou mutations aléatoires). D'une part, je me sens pas de coder l'ADN complet (d'autant que j'ai pas forcément besoin de coder l'humanité et le monde du vivant complet si je veux juste simuler un joueur d'échecs: cela s'appelle faire un modèle), et cela implique qu'il n'existe qu'une et une seule classe pour toutes les cellules d'un être humain (voire, pour toute l'humanité ou même tout le vivant si l'ADN est vu comme des données de la cellule). Je comprends mieux pourquoi l'évolution s'étale sur des millions d'anées. Perso, j'aimerai aller un peu plus vite que çaEncore une fois il faut arrêter d'aller si loin. Quand on fait de la programmation on copie le monde qui nous entoure dans une certaine mesure. Quand tu fais un objet Car en West est-ce que tu as une propriété pour la centaine de milliers de caractéristiques/composants d'une voiture ?!
(06-06-2015, 09:37 AM)Xenos a écrit : Si c'est "bien plus que return $this", alors y'a quoi de plus?Tous les contrats doivent être fait via des d'interface, des valueObject, du déclaratif, sans doutes d'autres trucs que j'oublie, j'ai pas tout en tête au moment ou je l'écris. Ca vient quand je code.
(06-06-2015, 09:37 AM)Xenos a écrit : Enfin, si instanceof est pas bien, tu dois être capable de me dire pourquoi en 15 secondes, non?Non parce que je n'ai pas le niveau pour te l'expliquer correctement. Quand je t'explique que du coup si tu fais du instanceof tu ne reposes plus sur un contrat (plus sur interface) car le type que tu sais gérer est à l'intérieur de ta classe et pas dans ton API, tu ne comprends pas. Je ne suis pas capable de te l'expliquer mieux que ça, donc je pense que le plus simple c'est que tu lises des trucs sur Internet à ce sujet.