- Nouveau
- Tendances
- Classement
-
Tagsbonnes-pratiquesBonnes pratiques42teletravailTélétravail15phpPHP14tddTDD13newsletternewsletter13devdev13architectureArchitecture13veilleVeille12design-patternDesign Pattern12agiliteAgilité12codeCode11javascriptJavaScript10devopsDevOps9conferenceConférence8carriereCarrière8retour-d-experienceRetour d'experience7front-endfront-end7gitGit6formationFormation6entreprenariatEntreprenariat6clean-codeClean Code6youtubeYoutube5videoVidéo5programmationprogrammation5podcastPodcast5organisationOrganisation5cultureCulture5testingTesting4tech-leadTech Lead4optimisationOptimisation4freelancingFreelancing4dddDDD4craftCraft4compagnonCompagnon4vue-jsvue.js3retrospectiveRetrospective3remoteremote3reconversionReconversion3programmation-fonctionnelleProgrammation fonctionnelle3productivteproductivté3performancesperformances3nodejsNodeJS3laravelLaravel3javaJava3humourHumour3ethiqueEthique3emploiEmploi3ecologieEcologie3debutantDébutant3cqrsCQRS3covid-19Covid-193clean-architectureClean Architecture3ci-cdCI/CD3blogBlog3architecture-hexagonaleArchitecture Hexagonale3webWeb2vscodevscode2slackSlack2reactReact2pythonPython2produitProduit2pooPOO2personal-brandingpersonal branding2iaIA2hexagonalehexagonale2green-itGreen IT2gestion-du-tempsGestion du temps2evenementÉvènement2ecosystemeEcosystème2donnees-personnellesDonnées personnelles2changelogChangelog2cercleCercle2vite-jsvite.js1visualstudiovisualstudio1vision-systemiqueVision systémique1vie-priveeVie privée1tinydbTinyDB1theorie-des-contraintesThéorie des contraintes1thematuredevTheMatureDev1testtest1systeme-de-queueSystème de queue1sqlSQL1springbootspringboot1slow-techSlow.tech1securiteSécurité1rustrust1restREST1refactoringrefactoring1queerQueer1prodprod1ports-and-adaptersPorts and Adapters1pedagogiePédagogie1pair-programmingPair programming1originesOrigines1open-sourceOpen Source1onlineonline1net.NET1mvcmvc1mutation-testingMutation testing1minimalismeMinimalisme1microsoftmicrosoft1maisonMaison1lowtechLowTech1livelive1licorneLicorne1langagelangage1jobjob1ingenieurieIngénieurie1inclusionInclusion1ideide1hommageHommage1hibernatehibernate1graphqlGraphQL1goGo1flowconFlowcon1flowflow1extreme-programmingeXtreme Programming1event-sourcingEvent sourcing1entretien-d-embaucheEntretien d'embauche1entretienentretien1entrainementEntrainement1energieEnergie1dojoDojo1dockerdocker1diversiteDiversité1devtoolDevTool1dbDB1ctoCTO1csscss1coup-de-gueuleCoup de gueule1cloudCloud1chansonChanson1buildbuild1blazorblazor1bffBFF1bddbdd1avenirAvenir1autonomieAutonomie1audioAudio1atddatdd1apiAPI1androidAndroid1alignementAlignement1algorithmealgorithme1
- Mes favoris
- Recevoir par email
- Partager un lien
Hommage
Origines
POO
Alan Kay retrace l’histoire des innovations qui ont été faites au Xerox PARC dans la fin des années 60 et début 79.
La présentation est faite sur une émulation de Smalltalk de l’époque à partir de données qui ont été récupérées de disques durs jetés par Xerox.
Pour ajouter un commentaire, tu dois te connecter ou créer un compte.
POO
Quelques règles simples pour écrire vraiment en objet.
Certaines me paraissent un peu trop drastique, qu'en pensez-vous ?
Derniers commentaires :
Marc Bouvier
il y a environ 2 ans - modifié il y a environ 2 ans
L'article ne mentionne pas qu'à l'origine il s'agit d'exercices qu'il ne convient pas forcément d'appliquer tout le temps.
Une source primaire : williamdurand.fr/...
Edit : l'article mentionne ces informations.
""
Object Calisthenics are programming exercises, formalized as a set of 9 rules invented by Jeff Bay in his book The ThoughtWorks Anthology. The word Object is related to Object Oriented Programming. The word Calisthenics is derived from greek, and means exercises under the context of gymnastics. By trying to follow these rules as much as possible, you will naturally change how you write code. It doesn’t mean you have to follow all these rules, all the time. Find your balance with these rules, use some of them only if you feel comfortable with them.
""
Une source primaire : williamdurand.fr/...
Edit : l'article mentionne ces informations.
""
Object Calisthenics are programming exercises, formalized as a set of 9 rules invented by Jeff Bay in his book The ThoughtWorks Anthology. The word Object is related to Object Oriented Programming. The word Calisthenics is derived from greek, and means exercises under the context of gymnastics. By trying to follow these rules as much as possible, you will naturally change how you write code. It doesn’t mean you have to follow all these rules, all the time. Find your balance with these rules, use some of them only if you feel comfortable with them.
""
Marc Bouvier
il y a environ 2 ans - modifié il y a environ 2 ans
Pour ce qui est de la règle des collections, je pense que l'intéret est de réduire l'interface uniquement au comportement métier attendu.
On peut par exemple restreindre la collection à l'insertion mais pas à la suppression.
En java, par exemples les collections sont mutables par défaut. Par ex l'interface List expose des méthodes pour ajouter ou modifier des éléments.
La surface d'attaque et les risques de régressions sont augmentées quand les collections ne sont pas wrappées.
Wrapper les collections peut aussi inciter le développeur à nommer le contrat de sa classe (DDD , ubiquitous language).
Ex.
// primitive collection just do collection stuff
shoppingCartItems.add(product);
shoppingCartItems.add(product);
// wrapped collection can be extended with domain semantic and behaviour
shoppingCart.add(product, 2);
shoppingCart.applyDiscountCode("COMPAGNON");
Dans le 2ème exemple la logique d'appliquer un discount n'est qu'à un seul endroit (à l'intérieur de la clases ShoppingCart). Si on manipulait une collection primitive dans tout l'appliacation, cette responsabilité serait déléguée aux clients de la collection qui pourraient faire n'importe quoi avec (leaky abstraction en.wikipedia.org/...
On peut par exemple restreindre la collection à l'insertion mais pas à la suppression.
En java, par exemples les collections sont mutables par défaut. Par ex l'interface List expose des méthodes pour ajouter ou modifier des éléments.
La surface d'attaque et les risques de régressions sont augmentées quand les collections ne sont pas wrappées.
Wrapper les collections peut aussi inciter le développeur à nommer le contrat de sa classe (DDD , ubiquitous language).
Ex.
// primitive collection just do collection stuff
shoppingCartItems.add(product);
shoppingCartItems.add(product);
// wrapped collection can be extended with domain semantic and behaviour
shoppingCart.add(product, 2);
shoppingCart.applyDiscountCode("COMPAGNON");
Dans le 2ème exemple la logique d'appliquer un discount n'est qu'à un seul endroit (à l'intérieur de la clases ShoppingCart). Si on manipulait une collection primitive dans tout l'appliacation, cette responsabilité serait déléguée aux clients de la collection qui pourraient faire n'importe quoi avec (leaky abstraction en.wikipedia.org/...
Pour ajouter un commentaire, tu dois te connecter ou créer un compte.