Bien que l'AOP apporte plusieurs bénéfices architecturaux et techniques aux équipes qui en font usage, l'AOP vient également avec son lot de pièges. Pour ces raisons, plusieurs délaissent l'AOP à cause de la complexité indue qui pourrait toutefois être réduite en suivant de simples bonnes pratiques et en préparant adéquatement son intégration.
Cette présentation a pour but d'aider une équipe à embrasser l'AOP tout en évitant les pièges. On y traitera de diverses bonnes et mauvaises pratiques avec l'AOP (architecture, IDE, refactorisation, tests...). L'accent sera placé sur des conseils pratiques comme le choix de frameworks (ex.: AspectJ ou Spring-AOP), du mode de tissage approprié à votre contexte, des conflits avec d'autres technologies Java, etc.
Résumé : Au bout de 3 ans de pratique intensive du BDD avec Specflow en C#, je vous propose de passer en revue les avantages et les écueils de cette pratique, mais également partager "trucs et astuces" et surtout les questionnements qui restent en suspend.
Bénéfices pour les participants : Apprendre et progresser sur le BDD et l'écriture de logiciel pilotée par les tests comportementalistes.
Guillaume, Saint Etienne : Développeur depuis mon premier micro: un ZX81, j’ai endossé également différents rôles, principalement chez des éditeurs logiciels: chef de projet, architecte logiciel, scrum master , et encore maintenant « Senior Software Programmer ».
Modélisation par Objets
À destination des étudiants du
2e année IUT Nice-Sophia Antipolis
- Problèmes du développement logiciel
* Histoire brève jusqu’aux limites de la programmation structurée
* Du bidouillage au Génie logiciel
- Introduction à UML
* Un peu d’histoire
* Survol
- De Merise à UML
Slides remis en forme d'une conférence "Coder propre" afin de montrer que c'est possible, à la portée de chacun et, surtout, INDISPENSABLE pour profiter de son code !
Bref, l'idée est de convaincre et de donner les premières pierres pour que tout un chacun puisse construire son paradis :)
Bien que l'AOP apporte plusieurs bénéfices architecturaux et techniques aux équipes qui en font usage, l'AOP vient également avec son lot de pièges. Pour ces raisons, plusieurs délaissent l'AOP à cause de la complexité indue qui pourrait toutefois être réduite en suivant de simples bonnes pratiques et en préparant adéquatement son intégration.
Cette présentation a pour but d'aider une équipe à embrasser l'AOP tout en évitant les pièges. On y traitera de diverses bonnes et mauvaises pratiques avec l'AOP (architecture, IDE, refactorisation, tests...). L'accent sera placé sur des conseils pratiques comme le choix de frameworks (ex.: AspectJ ou Spring-AOP), du mode de tissage approprié à votre contexte, des conflits avec d'autres technologies Java, etc.
Résumé : Au bout de 3 ans de pratique intensive du BDD avec Specflow en C#, je vous propose de passer en revue les avantages et les écueils de cette pratique, mais également partager "trucs et astuces" et surtout les questionnements qui restent en suspend.
Bénéfices pour les participants : Apprendre et progresser sur le BDD et l'écriture de logiciel pilotée par les tests comportementalistes.
Guillaume, Saint Etienne : Développeur depuis mon premier micro: un ZX81, j’ai endossé également différents rôles, principalement chez des éditeurs logiciels: chef de projet, architecte logiciel, scrum master , et encore maintenant « Senior Software Programmer ».
Modélisation par Objets
À destination des étudiants du
2e année IUT Nice-Sophia Antipolis
- Problèmes du développement logiciel
* Histoire brève jusqu’aux limites de la programmation structurée
* Du bidouillage au Génie logiciel
- Introduction à UML
* Un peu d’histoire
* Survol
- De Merise à UML
Slides remis en forme d'une conférence "Coder propre" afin de montrer que c'est possible, à la portée de chacun et, surtout, INDISPENSABLE pour profiter de son code !
Bref, l'idée est de convaincre et de donner les premières pierres pour que tout un chacun puisse construire son paradis :)
Teams that finish early : Allez vers des équipes agiles plus performantesAnas MBASSO
42% des projets agiles sont couronnés de succès.
49% des projets agiles sont livrés en retard.
9% sont un échec total
Il y a une meilleure méthode pour aider des équipes agiles à implémenter Scrum
NetBSD évolue constamment avec de nouvelles idées : The AnyKernel, gestionnaire de packages multiplate-formed pkgsrc, outil d'installation de paquet binaire pkgin, NetBSD Desktop project, NetBSD Logical Volume Manager (LVM) .NetBSD Veriexec subsystem, Common Address Redundancy Protocol (CARP) .
Cette conférence présentera NetBSD pour en détailler les points clés à travers sa dernière branche 6
Quieres llegar a un buen destino y tienes un abismo que te impide hacerlo. Pedro & Elio te explican qué hacer para llegar con seguridad a tu nuevo gran destino.
Te explicamos al detalle como Tu puedes Hacerlo. Haz clic en este enlace y déjanos tu e-mail
http://in-outnetwork.com/?p=2090/&ad=puente-slds/
La telesecundaria es un modelo educativo mexicano creado en 1968 que imparte educación secundaria a través de transmisiones televisivas para zonas rurales. Usa tres elementos: maestros, clases televisadas y guías de aprendizaje. La señal llega a las aulas vía satélite a través de Red Edusat en el canal 11, transmitiendo programas para cada grado. Se busca actualizar equipos e infraestructura, ampliar cobertura de señal y desarrollar nuevos modelos pedagógicos para usar TICs
El documento habla sobre los retos y la evolución del aprendizaje virtual en el siglo XXI. Señala que aprender en colaboración con otros tiene más sentido que trabajar solo, y que los entornos virtuales cada vez permiten más gestión del aprendizaje por parte del alumno. También menciona que una pedagogía basada en comunidades de aprendizaje y tecnologías que mejoren la interacción son claves para aumentar la calidad del aprendizaje en línea.
Este documento trata sobre primeros auxilios. Explica la diferencia entre urgencia y emergencia, y los métodos de actuación en cada caso, incluyendo RCP, maniobra de Heimlich y emergencia de calor. También describe diversas situaciones médicas como reacciones alérgicas e infarto, así como los síntomas y formas de actuación para cada una.
Componentes Internos De Una ComputadoraHanniahazel
Este documento describe los principales componentes internos de una computadora, incluyendo la fuente de alimentación, la placa base, las tarjetas de adaptador, los discos internos, las unidades externas, y los cables internos y externos necesarios para conectar todos los componentes.
El documento resume los principales tipos de erosión del suelo: la erosión eólica por el viento, la erosión del agua que incluye salpicadura, laminar, arroyuelos y quebrada, y la erosión masiva por movimiento de masas debido a la gravedad como deslizamientos y avalanchas. Explica cómo cada tipo remueve, transporta y deposita partículas de suelo.
El documento habla sobre la vida de una persona. Menciona su fecha de nacimiento, su familia, su educación y algunos detalles sobre su personalidad y gustos cuando era más joven.
El documento resume brevemente la historia del virus del Ébola, desde su descubrimiento en 1976 cerca del Río Ébola en la República Democrática del Congo hasta brotes recientes. Explica que el virus causa fiebre hemorrágica por Ébola y se transmite a través del contacto con fluidos corporales infectados. También describe algunos de los primeros brotes identificados y el aislamiento del virus.
Editor de imagenes y gestores de videosmalejandra26
Un gestor de imágenes es una aplicación que permite mostrar y administrar imágenes digitales almacenadas localmente o en línea, y puede manejar múltiples formatos de imagen. Permite editar imágenes para corregir errores de escaneo o fotografía como sobreexposición, ruido o efectos de ojos rojos. Las plataformas de video son sitios web que almacenan información personal y de negocios y funcionan como redes sociales, permitiendo contacto con otros a través de registros de perfiles y agregando contactos.
I. El informe PISA es una evaluación educativa internacional realizada cada tres años por la OCDE a estudiantes de 15 años en lectura, matemáticas y ciencias.
II. Muchos medios de comunicación informan sobre PISA de forma sesgada e inducen a confusión, en lugar de explicar sus objetivos de mejora educativa.
III. Comparar resultados entre países no debe ser el único enfoque, sino entender las particularidades de cada sistema educativo y cómo mejorar la calidad.
Un beau mandat dans un domaine vraiment enrichissant la PNL. Formation ideal pour inter-agir avec les clients, les collègues et avec soi-même. Je vous la conseille vivement cela change votre façon de voir le monde.
Teams that finish early : Allez vers des équipes agiles plus performantesAnas MBASSO
42% des projets agiles sont couronnés de succès.
49% des projets agiles sont livrés en retard.
9% sont un échec total
Il y a une meilleure méthode pour aider des équipes agiles à implémenter Scrum
NetBSD évolue constamment avec de nouvelles idées : The AnyKernel, gestionnaire de packages multiplate-formed pkgsrc, outil d'installation de paquet binaire pkgin, NetBSD Desktop project, NetBSD Logical Volume Manager (LVM) .NetBSD Veriexec subsystem, Common Address Redundancy Protocol (CARP) .
Cette conférence présentera NetBSD pour en détailler les points clés à travers sa dernière branche 6
Quieres llegar a un buen destino y tienes un abismo que te impide hacerlo. Pedro & Elio te explican qué hacer para llegar con seguridad a tu nuevo gran destino.
Te explicamos al detalle como Tu puedes Hacerlo. Haz clic en este enlace y déjanos tu e-mail
http://in-outnetwork.com/?p=2090/&ad=puente-slds/
La telesecundaria es un modelo educativo mexicano creado en 1968 que imparte educación secundaria a través de transmisiones televisivas para zonas rurales. Usa tres elementos: maestros, clases televisadas y guías de aprendizaje. La señal llega a las aulas vía satélite a través de Red Edusat en el canal 11, transmitiendo programas para cada grado. Se busca actualizar equipos e infraestructura, ampliar cobertura de señal y desarrollar nuevos modelos pedagógicos para usar TICs
El documento habla sobre los retos y la evolución del aprendizaje virtual en el siglo XXI. Señala que aprender en colaboración con otros tiene más sentido que trabajar solo, y que los entornos virtuales cada vez permiten más gestión del aprendizaje por parte del alumno. También menciona que una pedagogía basada en comunidades de aprendizaje y tecnologías que mejoren la interacción son claves para aumentar la calidad del aprendizaje en línea.
Este documento trata sobre primeros auxilios. Explica la diferencia entre urgencia y emergencia, y los métodos de actuación en cada caso, incluyendo RCP, maniobra de Heimlich y emergencia de calor. También describe diversas situaciones médicas como reacciones alérgicas e infarto, así como los síntomas y formas de actuación para cada una.
Componentes Internos De Una ComputadoraHanniahazel
Este documento describe los principales componentes internos de una computadora, incluyendo la fuente de alimentación, la placa base, las tarjetas de adaptador, los discos internos, las unidades externas, y los cables internos y externos necesarios para conectar todos los componentes.
El documento resume los principales tipos de erosión del suelo: la erosión eólica por el viento, la erosión del agua que incluye salpicadura, laminar, arroyuelos y quebrada, y la erosión masiva por movimiento de masas debido a la gravedad como deslizamientos y avalanchas. Explica cómo cada tipo remueve, transporta y deposita partículas de suelo.
El documento habla sobre la vida de una persona. Menciona su fecha de nacimiento, su familia, su educación y algunos detalles sobre su personalidad y gustos cuando era más joven.
El documento resume brevemente la historia del virus del Ébola, desde su descubrimiento en 1976 cerca del Río Ébola en la República Democrática del Congo hasta brotes recientes. Explica que el virus causa fiebre hemorrágica por Ébola y se transmite a través del contacto con fluidos corporales infectados. También describe algunos de los primeros brotes identificados y el aislamiento del virus.
Editor de imagenes y gestores de videosmalejandra26
Un gestor de imágenes es una aplicación que permite mostrar y administrar imágenes digitales almacenadas localmente o en línea, y puede manejar múltiples formatos de imagen. Permite editar imágenes para corregir errores de escaneo o fotografía como sobreexposición, ruido o efectos de ojos rojos. Las plataformas de video son sitios web que almacenan información personal y de negocios y funcionan como redes sociales, permitiendo contacto con otros a través de registros de perfiles y agregando contactos.
I. El informe PISA es una evaluación educativa internacional realizada cada tres años por la OCDE a estudiantes de 15 años en lectura, matemáticas y ciencias.
II. Muchos medios de comunicación informan sobre PISA de forma sesgada e inducen a confusión, en lugar de explicar sus objetivos de mejora educativa.
III. Comparar resultados entre países no debe ser el único enfoque, sino entender las particularidades de cada sistema educativo y cómo mejorar la calidad.
Un beau mandat dans un domaine vraiment enrichissant la PNL. Formation ideal pour inter-agir avec les clients, les collègues et avec soi-même. Je vous la conseille vivement cela change votre façon de voir le monde.
[Agile Tour Paris 2014] Comment rendre testable du code qui ne l'est pas ?Christophe HERAL
Les principes SOLID font partie des bases de la programmation orientée objet. Cependant, qui n'est jamais intervenu sur un projet avec l'ensemble du code fortement couplé ? Avec de ce fait de grandes difficultés à le tester unitairement ? L'objectif de cette présentation est de démontrer sur un cas d'usage comment l'utilisation d'interfaces et l'injection de dépendances va nous permettre d'améliorer ce code et de le rendre testable.
Pourquoi et comment nous relisons ensemble tout le code que nous produisons - retour d'expérience du WebCenter AXA sur la revue de code, accompagnés par Octo.
Ce cours présente la notion de qualité de code et comment il est possible de l'évaluer grâce à des métriques mesurables. Après avoir présenté plusieurs métriques standards, il se concentrer sur des aspects de qualité de code spécifique à l'orienté objet et présente les cinq concepts de l'orienté objet. La deuxième partie du cours présente plusieurs bonnes pratiques à avoir en programmation orientée objet, sur base d'exemples concrets.
Dans nos accompagnements techniques, nous observons régulièrement des problèmes de Legacy Code aussi appelé Code Patrimonial. Notamment lorsque des équipes font un virage agile et on leur demande soudainement de faire des tests unitaires automatisés. Pas si facile que cela.
Dans cette présentation, nous verrons les points suivants:
- Description de quelques techniques pour nous aider à tester le Legacy Code
- Comment avoir le droit de travailler sur du code pour le rendre plus facile à travailler
- Quelques pratiques et outils afin de s'en prémunir autant que possible au jour le jour.
Cette présentation a été donnée aux dates suivantes:
- 10 Novembre 2016 - Beer And Learn (Québec)
- 16 Novembre 2016 - Agile Tour Montréal
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...Cyrille Grandval
De nos jours de plus en plus d'entreprises ne jurent que par les tests unitaires. Faire du test, faire du test, faire du test ! “Une application n'est pérenne que si elle est testée et elle est testée si plus de 80% du code est couvert.”
Cela devient même un élément décisif du recruteur en entretien :
- Votre collaborateur a l'air vraiment bien mais... Il a déjà fait des tests unitaires ? Il a plus de deux ans d'expérience là dessus ?
- Juste sur deux projets, par contre il possède la bonne philosophie.
- Ah oui mais non il faut qu'il en ait fait 2 ans, c'est un minimum. On cherche des experts nous !
Problématique : "Je veux minimum 80% de couverture de code !!!" Qui n'a pas entendu cette phrase dans la bouche d'un chef de projet ou d'un lead dev trop consciencieux sans doute.
Dans certains projets un test unitaire est bon si il couvre au moins 80% de la fonctionnalité à tester, c'est tout ce qui est demandé et c'est cela qu'il faut avoir. Il est avant tout essentiel de s'interroger sur la notion de couverture de code dans un test unitaire : La couverture de code est-elle un but ? un facteur qualité ? une représentation visuelle d'un test ? Ou est-ce cet horrible fantôme qui vient hanter une application ?
Pour faire simple : un test qui couvre 100% du code à tester est-il forcement fiable ?
Conférence PHPTour Lyon 2014 - Tests unitaires - Je veux mes 80% de couverture de code !!!! http://afup.org/pages/phptourlyon2014/sessions.php#1094
Paris Web 2015 - Atelier désendettement Javascript legacyFrançois Petitit
par Michael Akbaraly et François Petitit - OCTO Technology
Vous avez récupéré un projet JavaScript de plusieurs milliers de lignes, on vous demande des évolutions et des corrections de bugs, et rien ne va.
Code illisible, régressions en pagaille, structure des répertoires incompréhensibles : vous ne savez pas par où commencer !
Au long des 90 minutes de cet atelier, nous vous proposons de découvrir les techniques et les outils qui vont vous sauver la vie via des travaux pratiques de code JavaScript côté back-end avec NodeJS, et côté front-end avec AngularJS.
Débutants ou ayant déjà une connaissance de ces technologies sont les bienvenus. Les travaux pratiques seront disponibles si vous souhaitez coder vous-mêmes pendant l'atelier.
Comment récupérer un projet Web pourri ... et réussir à travailler dessus.Guillaume RICHARD
Présentation pour Blendwebmix 2017, sur le thème de la récupération de projet Web.
Je présente les principales raisons de fails de projets, et comment réussir quand même à travailler dessus.
ATTLS22 - Sophie ROCCA - Le leadership inconscient des expertsAgile Toulouse
J’ai eu récemment à coacher un groupe d’experts techniques, individuellement, sur leurs compétences de leadership. J’ai été étonnée de voir que s'ils reconnaissaient facilement leur légitimité technique, beaucoup niaient avoir un quelconque leadership.
Je me suis interrogée sur leur identification d’un leader avec des personnalités extraverties ou visionnaires, et leur difficulté à identifier leur propre leadership. Et j’ai donc monté un programme de sensibilisation aux différents types de leadership, que je restituerai synthétiquement.
Je parlerai aussi sur le rôle et le poids des experts techniques au sein d’une équipe Agile, souvent effacés entre des Product Owner et des Scrum masters.
ATTLS22 - Haja RAMBELONTSALAMA - Changement de Culture bien ordonnée commence...Agile Toulouse
Qui veut du changement ? 😎 Yeaah
Qui veut se changer ? 😬 Euuh
Qui veut mener le changement ? 😵. . .
Ok, juste mettre en place une nouvelle culture alors ? 😱 Fuyez c’est le plus dur !!
À la recherche de moyens, d'outils pour générer/accompagner/pérenniser le changement de culture dans votre organisation, venez découvrir les leviers pour mieux se comprendre et mieux comprendre les autres pour mieux travailler/collaborer/coopérer/vivre ensemble.
Travailler sur soi c'est déjà travailler pour l'équipe et "il n'y a pas d'excellence technique sans excellence humaine"
A la sortie de cette conférence-échange, quand vous les auriez trouvés, oseriez-vous réveiller tous ces leaders qui sommeillent ?
ATTLS22 - Déborah MULLER GAUTHIER - Tribulations d’une SMAgile Toulouse
A mon arrivée à Lectra, équipée de ma motivation, pleine d'optimisme mais aussi de doutes, j'entame une plongée vertigineuse au sein de mon équipe et au-delà !
Venez vivre les tribulations d'une ScrumMaster qui s'apprête à s'engager pleinement dans cette phrase du Scrum Guide :
"Scrum Master are true leaders who serve the ScrumTeam and the larger organization".
Je vous embarque dans mes aventures :)
Prêt pour passer leader agile level 1 ? A vous de jouer !
Un passage flash par un peu de théorie et des concepts, mais surtout de la pratique de 4 façons différentes de travailler en collaboration - l'agrégation, le pairing, le swarming, le mobbing.
Expérimentons ensemble afin de comparer les expériences et les contextes.
En plus du vécu, les collaborateurs d'une heure sortiront avec un atelier prêt-à-l'emploi pour explorer dans leurs propres contextes.
Agile Tour Toulouse 2020 : FORTUNEO - Tous pour un, l'agile pour tous ! Comme...Agile Toulouse
Conférence à regarder ici : https://www.youtube.com/watch?v=2P0gRTV34-8
Diagnostic de maturité Agile accessible ici : https://cutt.ly/cgzecbr
Pitch de la conférence :
Pour opérer une transformation agile à l’échelle d’une organisation, différents niveaux et angles sont à adresser pour couvrir les 360°. Nous parlons souvent de coaching des Feature Teams, faire évoluer l’IT, revoir l’organisation, accompagner au changement… Un autre pan essentiel à prendre en compte dans le cadre de la transformation : l'accompagnement des métiers, qui sont au coeur de l'activité de l'organisation : Juristes, conseillers clients, RH, marketeurs… doivent aussi monter dans le bateau pour qu’il avance.
The document discusses different types of software tests, including unit tests, functional tests, load tests, soak tests, end-to-end tests, integration tests, and exploratory tests. It also covers how developers, QA teams, and customers are involved in testing as part of the development process. The document uses an example of implementing a feature to allow commenting on tasks to illustrate how to develop a test plan and consider the tradeoffs between testing different quality attributes. It emphasizes that testing should be integrated into the development process and that QA teams are part of the overall development team.
4. Agenda
• Pourquoi ?
• Qu’est ce qu’un Code Clean ?
• Les mauvaises pratiques
• Les bonnes pratiques
www.agiletour.com 4
5. Disclaimer
• Discours essentiellement pour :
o Langages objets
o Langages évolués
• Je n’entre pas dans tous les détails
o Je vais aller très vite sur certaines choses
• Je vais enfoncer quelques portes ouvertes
• Je ne veux pas essayer de vous convaincre
• Il peut y avoir un peu de frustration
www.agiletour.com 5
6. Agile et Qualité
Continuous attention to technical excellence
and good design enhances agility.
9e principe du Manifeste Agile
www.agiletour.com 6
7. Pourquoi la Qualité ?
Responding to change over following a plan
3e valeur du Manifeste Agile
www.agiletour.com 7
8. Une vue de la Qualité
Une application informatique est de qualité lorsque
Coût le coût d’ajout d’une fonctionnalité reste stable.
Coût
Temps
Temps
www.agiletour.com 8
9. Pourquoi un Code Clean ?
• Pour s’adapter au changement à moindre coût
• Pour pérenniser les produits
• Pour valoriser le travail d’un développeur
o Vecteur de motivation intrinsèque
• Pour réconcilier progrès économique et social
Kent Beck, Extreme Programming Explained 2nd Ed.
www.agiletour.com 9
10. Qu’est-ce qu’un Code Clean ?
• Bjarne Stroustrup, Grady Booch, Ron Jeffries, Kent
Beck, Michael Feathers, Ward Cunningham…
o Testé !
o Elégant et facile à lire
o Montre clairement l’intention de son auteur
• Ecrit à destination des prochains développeurs
• Il est difficile pour les bugs de se cacher
o Simple
• Non dupliqué
• Contient un minimum d’artefacts (classes, méthodes, etc.)
o Les dépendances sont minimales et explicites
www.agiletour.com 10
11. A propos des tests…
Quand j’entends que les tests
« c’est pour ceux qui savent pas coder » …
Source : http://lesjoiesducode.tumblr.com/post/31452862688/quand-le-stagiaire-me-dit-que-les-tests-cest-pour
www.agiletour.com 11
12. Quelles horreurs dans le code ?
Code Smells
Large class
Data class
Duplicated code Refused bequest
Uncommunicative name Lazy class Type embedded in name
Message chain Conditional complexity Inappropriate intimacy
Data clumps
Speculative generality Comments Dead code
Primitive obsession Shotgun Surgery
Inconsistent names Middle man
Divergent change Feature envy
Temporary field Long parameter list Long method
Wrong level of abstraction Alternative classes with different interfaces
Parallel inheritance hierarchies
www.agiletour.com 12
13. Quelles horreurs dans le code ?
Singleton
Tight coupling
Untestable
Premature optimization
I ndescriptive naming
Duplication
www.agiletour.com 13
16. Nommage
• Les noms doivent révéler l’intention
• Ne tronquez pas les mots !
o Le coût du
• Utilisez des mots qui ont du sens
• Pas d’encodage
• Ne surchargez pas les noms d’infos inutiles
• N’hésitez pas à changer un nom
www.agiletour.com 16
17. Duplication de code
• Règle n°2, selon Kent Beck
• DRY : Don’t Repeat Yourself !
Extraction de méthode
www.agiletour.com 17
18. Abstraction
• 1 niveau d’abstraction par méthode
o Extraction de méthode
o Polymorphisme
o Descendre/Monter/Déplacer une méthode
o Et même le renommage !
• Loi de Demeter
o « Don’t talk to strangers »
a.getB().getC().doSomething() a.doSomething()
www.agiletour.com 18
19. Abstraction
• Préoccupations transverses
o A ne pas mélanger avec le code métier
• Securité, logs, cache, transaction, etc.
o Introduire l’AOP
www.agiletour.com 19
20. Couplage fort
A
Tests
Intégration
Réutilisation
Correction de bugs
Ajout de fonctions
Etc.
www.agiletour.com 20
21. Couplage fort
• Qu’est-ce qui crée un couplage fort ?
o new MaDependance();
o Les appels statiques
o Les dépendances sur des classes concrètes
• Que faut-il faire ?
o Méthodes d’instance
o Injection de dépendances : pattern n°1
o Utilisation de types abstraits ou d’interfaces
www.agiletour.com 21
22. Injection de dépendances
public class A On va injecter B et C !
{
private B b;
public void ExecuteA(int a)
{ On crée un couplage
b = new B(); fort entre A et B/C !!
C c = new C();
if (a != 3) A collabore avec B et C
b.ExecuteB();
else
c.ExecuteC();
}
}
23. Injection de dépendances
• Comment injecter B et C ? public class A {
private B b;
o Par constructeur private C c;
o Par setter public A(B b) { this.b = b; }
• Late binding public void setC(C c) {
o Reflection this.c = c;
static Main (string[] args)
}
{
B b = new B();
public void ExecuteA() {
A a = new A(b);
En bleu, peut être délégué à int a = 1;
une Factory : ce sont b = new B();
a.setC(new C1());
C c = new C();
a.ExecuteA();
les Conteneurs d’IoC if (a != 3)
b.ExecuteB();
a.setC(new C1());
else
a.ExecuteA();
C.ExecuteC();
}
}
24. Méthodes longues
• Qui a des normes de code à respecter ?
• Qui les respecte ?
• Quelle est la taille maximale pour une méthode ?
• Petite astuce (d’un certain J.A.) :
o Commentez votre méthode sans modération
o Renommez les variables, champs, constantes, etc.
avec les concepts utilisés dans les commentaires
o Faites des extractions de méthode en utilisant les
commentaires pour nommer les méthodes
o Eliminez la duplication
o Virez les commentaires !
www.agiletour.com 24
25. Commentaires
• Uncle Bob : « Comments are always failures »
o Ils mentent, vieillissent très mal, ne sont pas
refactorables, etc.
o « Aveu de faiblesse » à…
• Utiliser un bon nom
• Découper une méthode
• Monter en abstraction
o Avant d’écrire un commentaire, faites 7 fois le tour de
votre chaise
o Sauf pour : explication (pourquoi ?), javadoc,
copyright.
www.agiletour.com 25
26. Gestion d’exceptions
• Principe n°1 : Fail Fast
o Programmation défensive, par assertions
o Lever des exceptions dès que nécessaire
• i.e. : pour des cas non métiers
o Ne pas masquer systématiquement les autres
exceptions
• Type NullPointerException
www.agiletour.com 26
27. Tests
• Indispensables pour modifier le code
• Le code des tests est au moins aussi important que
le code de production
o Les tests doivent être clean
o Un concept par test
o Utilisez des noms et une structure qui documentent
• ShouldDoThisWhenThat()
• Given / When / Then
• Qualité essentielle : lisibilité
o Un test doit pouvoir se lire comme une histoire
o Créez votre propre DSL de test !
www.agiletour.com 28
29. Autres conseils
• N’écrivez pas de Singleton !
o Mettez en place l’injection de dépendances
o Et gérez la durée de vie de vos objets
• Ne pensez pas héritage, pensez polymorphisme
o Sinon : "a un" au lieu de "est un“
• Ne pensez pas "switch/if", pensez polymorphisme
o Pattern strategy
www.agiletour.com 30
30. Autres conseils
• Du code non testé n’est pas maintenable
• Ne pensez pas "réutilisabilité", pensez
abstraction
o La réutilisabilité est une conséquence de la montée
en abstraction et de l’élimination de la duplication
• Pas d’optimisation prématurée !
o YAGNI ! KISS !
o « First make it work, then make it right »
• Tout ça, ça commence DEMAIN !
www.agiletour.com 31
32. Pour finir…
Any fool can write code that a computer can understand.
Good programmers write code that humans can understand.
Martin Fowler
Codez toujours en pensant que celui qui maintiendra
votre code est un psychopathe qui connait votre adresse.
Martin Golding
Penser que les tests [et le refactoring] ralentissent le développement
c’est comme penser que prendre des voyageurs ralentit le bus
David Evans
www.agiletour.com 33