- Nouveau
- Tendances
- Classement
-
Tagsbonnes-pratiquesBonnes pratiques41teletravailTélétravail15tddTDD13design-patternDesign Pattern12architectureArchitecture12agiliteAgilité12codeCode11devopsDevOps9carriereCarrière8front-endfront-end7conferenceConférence7veilleVeille6retour-d-experienceRetour d'experience6javascriptJavaScript6gitGit6entreprenariatEntreprenariat6clean-codeClean Code6podcastPodcast5cultureCulture5youtubeYoutube4videoVidéo4organisationOrganisation4freelancingFreelancing4formationFormation4dddDDD4compagnonCompagnon4vue-jsvue.js3testingTesting3retrospectiveRetrospective3remoteremote3reconversionReconversion3performancesperformances3optimisationOptimisation3nodejsNodeJS3humourHumour3ethiqueEthique3emploiEmploi3ecologieEcologie3debutantDébutant3cqrsCQRS3covid-19Covid-193clean-architectureClean Architecture3ci-cdCI/CD3blogBlog3webWeb2tech-leadTech Lead2slackSlack2programmation-fonctionnelleProgrammation fonctionnelle2productivteproductivté2personal-brandingpersonal branding2javaJava2hexagonalehexagonale2green-itGreen IT2gestion-du-tempsGestion du temps2evenementÉvènement2ecosystemeEcosystème2donnees-personnellesDonnées personnelles2changelogChangelog2cercleCercle2architecture-hexagonaleArchitecture Hexagonale2vscodevscode1vite-jsvite.js1vision-systemiqueVision systémique1vie-priveeVie privée1tinydbTinyDB1theorie-des-contraintesThéorie des contraintes1thematuredevTheMatureDev1systeme-de-queueSystème de queue1sqlSQL1springbootspringboot1slow-techSlow.tech1securiteSécurité1rustrust1restREST1reactReact1queerQueer1pythonPython1produitProduit1ports-and-adaptersPorts and Adapters1pooPOO1phpPHP1pedagogiePédagogie1open-sourceOpen Source1onlineonline1net.NET1mvcmvc1mutation-testingMutation testing1minimalismeMinimalisme1maisonMaison1lowtechLowTech1livelive1licorneLicorne1langagelangage1jobjob1ingenieurieIngénieurie1inclusionInclusion1ideide1iaIA1hibernatehibernate1graphqlGraphQL1goGo1flowconFlowcon1flowflow1event-sourcingEvent sourcing1entretien-d-embaucheEntretien d'embauche1entretienentretien1entrainementEntrainement1energieEnergie1dojoDojo1dockerdocker1diversiteDiversité1devtoolDevTool1dbDB1ctoCTO1craftCraft1coup-de-gueuleCoup de gueule1cloudCloud1chansonChanson1bffBFF1avenirAvenir1autonomieAutonomie1audioAudio1apiAPI1androidAndroid1alignementAlignement1algorithmealgorithme1
- Mes favoris
- Recevoir par email
- Partager un lien
POO
Quelques règles simples pour écrire vraiment en objet.
Certaines me paraissent un peu trop drastique, qu'en pensez-vous ?
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.
""
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/...