jeudi 23 avril 2015

Les getter c'est bien

J'ai longtemps pensé qu'un getter c'était bien. Je me disais que c'était mieux que de laisser la propriété publique, on contrôle vraiment la donnée qui est accédée depuis l'extérieur.

Bon sur ce point je n'ai pas vraiment tort, c'est mieux que d'avoir une propriété publique, mais cependant un getter ça reste mal

Avant j'aurais codé en POO ça :

Le problème c'est que si le barman change son type de retour pour la méthode getMajority, par exemple si il décide pour un autre besoin de retourner "18 years" au lieu de "18" mon code est cassé. Barman est donc trop couplé à User, une modification dans Barman doit être faite en prennant en compte l'utilisation qui est faite de Barman.

En east ça donne ça :

(le code n'est pas complet, il faudrait des interfaces pour un code plus propre et moins couplé)

Et là tout de suite on remarque que le code est bien plus long. Mais aussi que Barman peut être modifié comme on veut sans se préoccuper de User.

Et on voit aussi que le code est bien plus souple qu'avant, c'est le barman qui a la responsabilité de savoir si un utilisateur peut boire ou pas. Il peut demander l'âge, la taille, le sexe, ce qu'il veut. Et ensuite il choisira si l'utilisateur peut boire ou non. 

D'ailleurs l'utilisateur est libre d'écouter le barman ou pas et de boire de l'alcool qu'il ai l'autorisation ou pas. 

mercredi 22 avril 2015

Je suis dieu ou mes objets sont autonomes

Si j'essaye de résumer la POO en une phrase ça donne quelque chose du genre :
Je suis dieu, j'ai tout pouvoir sur mes objets je sais les manipuler et en extraire les informations dont j'ai besoin pour parvenir à mon but.
Et la programmation east :
Mes objets sont autonomes je leur fait confiance pour réaliser correctement la tâche que je leur donne.
Par exemple pour faire boire de l'alcool à un utilisateur uniquement voici ce que je ferais en east et en POO :

En POO c'est moi le programmeur qui dit à mon objet ce qu'il va faire par rapport aux données qu'il a.
En programmation east je demande à l'objet user de boire de l'alcool et je lui fait confiance pour ne pas le faire si il n'est pas majeur.

Boîte noire

Le principe global de la programmation east et de voir les objets comme des boîtes noires.
On ne sait pas ce qu'il y a dedans, on ne sait pas ce qu'il s'y passe et on ne peut y récupérer aucune information.
Ce qui veut donc dire qu'un objet n'a pas le droit d'avoir de propriété publique ni de getter.
Comme nous allons le voir plus tard ça me pose souvent des problèmes car j'ai pris des mauvaises habitudes de programmation.
A chaque fois que j'ai besoin d'un getter ça m'impose une réflexion sur la conception de mon code et je me rends souvent compte une fois la solution trouvé que mon nouveau code est plus flexible et plus facilement extensible.

East, la programmation orienté objet à l'origine

J’ai découvert ce type de programmation que je nommerais “east” par la suite grâce à mageekguy sur le salon ##atoum de freenode.
(D’ailleurs, si vous voulez en parler on a ouvert le salon ##east sur freenode)
Voici un petit résumé rapide pour expliquer de quoi il s’agit :
La programmation east c’est un peu la programmation orientée objet telle qu’elle a été pensé au début par Alan Kay (vous inquiétez pas si vous le connaissez pas, moi non plus).
Quand je me suis mis à coder en POO je l’ai fait de façon incorrecte, un peu de la POO procédurale, je stocke des données dans des objets, puis je leur demande ces données pour travailler ou/et je leur demande de faire un travail.
Souvent le tout bien imbriqué, trop imbriqué, mal concu. A travers différents messages je vais essayer de vous montrer ce que c’est la programmation east et en quoi c’est différent de ma précédente façon d’aborder la POO.
Il faut d’ailleurs noter que je tatônne encore énormément en east, sur savoir ce qui a du sens, ce qui n’en a pas et mes messages ici servirons aussi comme lieu d’échange pour m’aider dans cet apprentissage
Pour finir ce premier message, rendons à césar ce qui lui appartient à savoir James Ladd qui est l’auteur de la programmation east, même si nous verrons par la suite je ne suis pas toujours d’accord avec ces concepts et que ma vision des choses à évoluée différement de la sienne sur certains points.
Et un dernier détail, l’ensemble des réflexions que je poste ici sont généralement suite aux échanges qu’il y a eu lieu sur le salon ##east mais cependant, ce que j’écris ici reste ma seule interprétation et vision de ces échanges.