Microsoft
Développement .NET
Programmation agile & qualité logicielle en C#
Avis d'expert
Une des constantes dans le domaine du développement logiciel est le changement. Il est illusoire de penser que les besoins de l'utilisateur peuvent être figés dès le démarrage de la phase de développement et tout au long du cycle de vie d'une application. La plus grande difficulté à laquelle font face les développeurs est d'intégrer ces demandes de changement inévitables tout en essayant de contenir les dérives potentielles de leur code. En C#, la qualité du code produit va au-delà de la simple maîtrise de la syntaxe du langage. La flexibilité, la testabilité et la maintenabilité du code font appel à des concepts fondamentaux de la programmation orientée objet ainsi qu'à des pratiques de développement souvent faciles à mettre en œuvre.
Objectifs pédagogiques
- Apprendre les principes fondamentaux de la programmation orientée objet
- Reconnaître et savoir corriger les défauts les plus courants que l'on peut trouver dans du code
- Assimiler quelques règles simples de conception et de codage
- Etudier et mettre en œuvre quelques design patterns utiles
Public
Développeur
Architecte technique
Pré-requis
- Avoir une expérience réelle en développement C# ou avoir suivi la formation « Programmation C# » (Réf. MSCSH).
Méthode pédagogique
Formation rythmée par des apports théoriques et des ateliers de mise en pratique.
Programme pédagogique détaillé par journée
Jour 1
Jour 2
Jour 3
Jour 4 Introduction
Les promesses non tenues de la programmation orientée objet.
Les enjeux de la qualité du code.
Etude de cas
Identification de défauts dans un exemple de code.
Comparaison avec un code de meilleure qualité.
Enseignements tirés.
Les principes SOLID de la programmation orientée objet
Le principe de responsabilité unique.
Le principe open-closed.
Le principe de substitution de Liskov.
Le principe de séparation des interfaces.
Le principe d'inversion de dépendance.
Règles de codage agile
Ce qui contribue vraiment à la lisibilité du code.
Adopter la « scout attitude ».
Accorder de l'importance au nommage des classes, méthodes et variables.
Appliquer la règle DRY.
Eviter les types primitifs.
Faire court (classes et méthodes).
Travailler à un seul niveau d'abstraction.
Se passer de commentaires.
Ne pas être sur la défensive.
Vraiment gérer les exceptions.
Règles de conception agile
Favoriser la composition à l'héritage.
Rendre les dépendances explicites.
Appliquer la loi de Demeter.
Bannir le « if » et le « switch » avec le polymorphisme.
Eradiquer le « new » avec les factories et les conteneurs IoC.
Eviter le « static » et les singletons avec l'injection de dépendance.
Maîtriser les effets de bord avec la loi de séparation commande-requête.
Référencer les objets en fonction de leur longétivité.
Rendre inutiles les classes utilitaires.
Design patterns importants pour la programmation agile
Le pattern Strategy.
Le pattern Null Object.
Le pattern Visitor.
Le pattern Chain Of Responsibility.
Le pattern Specification.
Agilité dans l'accès aux données
Le décalage entre modèle métier et persistance.
Distinction entre entités et services.
Mapping de données et syndrome du ver à bois.
Utilisation d'un framework ORM (Object-Relational Mapping).
Les patterns Repository et Active Record.
Agilité des tests
Les stratégies de test.
Automatisation des tests avec NUnit.
Ecriture de tests efficaces.
Utilisation de bouchons de test.
Problèmes et solutions pour tester l'accès aux données.
Ingénierie logicielle agile
Mise en œuvre d'une usine à logiciel simple avec Nant/Msbuild.
Mesure de la qualité de son code avec FxCop, StyleCop et NDepend.
Gestion des versions de son code : branches, tags et merging.











4 jours - 28 heures



