- Nouveau
- Tendances
- Classement
-
Tagsnewsletternewsletter46devdev45bonnes-pratiquesBonnes pratiques43phpPHP36programmationprogrammation34veilleVeille15teletravailTélétravail15architectureArchitecture13tddTDD13agiliteAgilité12javascriptJavaScript12design-patternDesign Pattern12codeCode11devopsDevOps10laravelLaravel9conferenceConférence8carriereCarrière8front-endfront-end7retour-d-experienceRetour d'experience7formationFormation6entreprenariatEntreprenariat6gitGit6cultureCulture6clean-codeClean Code6youtubeYoutube6craftCraft5refactoringrefactoring5videoVidéo5interviewinterview5organisationOrganisation5podcastPodcast5code-legacyCode Legacy4compagnonCompagnon4dddDDD4testingTesting4freelancingFreelancing4tech-leadTech Lead4optimisationOptimisation4javaJava3pythonPython3iaIA3humourHumour3reactReact3ethiqueEthique3emploiEmploi3ecologieEcologie3reconversionReconversion3debutantDébutant3remoteremote3cqrsCQRS3covid-19Covid-193securiteSécurité3retrospectiveRetrospective3clean-architectureClean Architecture3ci-cdCI/CD3vue-jsvue.js3blogBlog3architecture-hexagonaleArchitecture Hexagonale3rustrust3performancesperformances3nodejsNodeJS3programmation-fonctionnelleProgrammation fonctionnelle3productivteproductivté3slackSlack2donnees-personnellesDonnées personnelles2ecosystemeEcosystème2pair-programmingPair programming2evenementÉvènement2personal-brandingpersonal branding2produitProduit2gestion-du-tempsGestion du temps2changelogChangelog2cercleCercle2green-itGreen IT2hexagonalehexagonale2vscodevscode2pooPOO2webWeb2tinydbTinyDB1algorithmealgorithme1alignementAlignement1originesOrigines1dbDB1vie-priveeVie privée1androidAndroid1ctoCTO1apiAPI1csscss1restREST1pedagogiePédagogie1coup-de-gueuleCoup de gueule1vision-systemiqueVision systémique1prodprod1atddatdd1audioAudio1autonomieAutonomie1visualstudiovisualstudio1cloudCloud1vite-jsvite.js1slow-techSlow.tech1avenirAvenir1bddbdd1chansonChanson1bffBFF1blazorblazor1ports-and-adaptersPorts and Adapters1queerQueer1goGo1graphqlGraphQL1hibernatehibernate1hommageHommage1net.NET1mvcmvc1ideide1inclusionInclusion1ingenieurieIngénieurie1mutation-testingMutation testing1minimalismeMinimalisme1systeme-de-queueSystème de queue1jobjob1langagelangage1sqlSQL1licorneLicorne1livelive1lowtechLowTech1maisonMaison1buildbuild1theorie-des-contraintesThéorie des contraintes1devtoolDevTool1diversiteDiversité1dockerdocker1dojoDojo1open-sourceOpen Source1onlineonline1energieEnergie1entrainementEntrainement1thematuredevTheMatureDev1entretienentretien1entretien-d-embaucheEntretien d'embauche1event-sourcingEvent sourcing1extreme-programmingeXtreme Programming1flowflow1flowconFlowcon1react-nativeReact-Native1springbootspringboot1testtest1microsoftmicrosoft1
- 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.
Partagé par Marc Bouvier
il y a plus de 2 ans
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 ?
Partagé par Steeven Ramaheridianina
il y a plus de 3 ans
Derniers commentaires :
Marc Bouvier
il y a plus de 3 ans - modifié il y a plus de 3 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 plus de 3 ans - modifié il y a plus de 3 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.