C++: Thèmes avancés

Nouveau cours dans la bibliothèque Pluralsight
Par Kate Gregory

Une fois que vous connaissez la base de la syntaxe C++ et ce que la bibliothèque standard vous permet, il est temps pour vous de déterminer si le code que vous écrivez est bon ou non. Le C++ moderne est expressif, lisible, rapide, et sécurisé. Dans ce cours vous mettrez à contribution vos connaissances en C++ afin de découvrir plusieurs façons de s’assurer que vos applications sont implémentée en C++ moderne. Vous tirerez ainsi profit de la bibliothèque standard et écrirez du code pérenne et sûr.

Visualisez ce nouveau cours maintenant ! (US)

image

Migrations de type “Entity Framework Code First”

Nouveau cours dans la bibliothèque Pluralsight
Par Julie Lerman

Ce cours a pour sujet Entity Framework Migrations, ajouté dans EF 4.3. Les migrations vous permettent de faire évoluer votre base de base de données sans perdre de données ou d’autres objets de base de données.

Visualisez ce nouveau cours maintenant ! (US)

image

Les modèles de domaine “anémiques”

De par notre expérience en tant qu’auditeurs techniques, nous avons observé de plus en plus de situations de ‘Modèles de domaine anémiques’. Poussés par un manque de compréhension du principe de ‘Séparation des problèmes’, il semble que certains développeurs non expérimentés aient un peu trop tendance à créer des multitudes de classes en déclinant ce qu’ils ont compris des principes d’architecture dans du code structuré de manière très maladroite et inefficace.

Revenons à la base telle que décrite il y a quelques années par Martin Fowler :

Le symptôme de base d’un modèle de domaine anémique, c’est que, à première vue, il ressemble à un modèle normal. Il y a des objets dont la plupart sont nommés avec des noms de domaine et ces objets sont reliés avec une relation de structure riche comme les vrais modèles de domaines. Le hic c’est qu’il n’y a pas plus de comportement entre ces objets qu’entre des réceptacles de lecture et mise à jour de propriétés. Bien souvent ces modèles sont livrés avec des règles de conception qui empêchent de mettre une quelconque logique de domaine dans les objets. Au lieu de cela il existe un ensemble de d’objets service qui capturent toute la logique de domaine. Ces services évoluent au-dessus du modèle de domaine et l’utilisent uniquement pour les données.

C’est exactement ce que nous essayons d’éviter dans nos projets : ces classes de logique métier vides, souvent encapsulées dans une couche supplémentaire de services procéduraux qui au final crée juste une conception de style procédural. En outre, comme nombreux sont ceux qui pensent que les objets anémiques sont de vrais objets, ils oublient complètement la raison d’être de la conception orientée-objet.

image

A l’inverse, Eric Evans affirme au sujet de la couche domaine (ou couche modèle) :

Chargée de représenter les concepts métier, l’information sur la situation et les règles du métier. Etat qui reflète comment la situation métier est contrôlée et utilisée, même si les détails techniques de stockage sont délégués à l’infrastructure. Cette couche est le cœur du logiciel métier.

Et nous sommes totalement alignés sur cette vision : en particulier aujourd’hui, à l’abord d’une nouvelle vague technologique (e.g. HTML5 & WinRT) ; la véritable clé, c’est votre architecture. Si vous avez déjà cette couche de domaine riche, les couches supérieures devraient simplement s’appuyer sur elle ; les coquilles vides fournissent des interactions avec l’utilisateur au cœur de votre logiciel métier. Par conséquent, intégrer une nouvelle plateforme (allant du client riche au web ou des formulaires Web au MVC par exemple) se résume à la création de cette coquille.

C’est exactement la raison pour laquelle nous avons créé CodeFluent Entities, avec pour 1er objectif de générer un vrai modèle métier objet .NET : le produit génère une couche domaine .NET complète comprenant vos logiques métier et qui peut être utilisée de manière transversale pour toutes les technologies .NET (Windows Forms, WPF, SharePoint, ASP.NET MVC, ASP.NET Web Forms, Windows workflows etc…) ; et de cette façon sécuriser votre investissement.

En tant que producteur modèle métier objet (générateur de code) il peut générer :

  • Les classes : des classes de base à l’ancienne (ne provenant pas d’une classe de base technique), lisibles par l’homme, toutes partielles et extensibles facilement par un développeur avec mise en œuvre extensive d’interfaces (ICloneable, IComparable, IDataErrorInfo, IEquatable, INotifyPropertyChanged, etc) pour faciliter le développement des couches supérieures et déboguable facilement dans la mesure où aucun code n’est généré dynamiquement à l’exécution,
  • Les énumérations : dans la mesure où CodeFluent Entities n’est pas un ORM, vous pouvez créer vos propres énumérations .NET ou réutiliser des énumérations existantes,
  • Les espaces de nommage multiples : comme il est courant d’avoir plus d’un domaine dans de vraies applications métier,
  • Les règles : pour valider vos données, mettre en place des opérations et implémenter votre logique métier,
  • Les méthodes : créer vos propres méthodes à côté de celles générées par défaut,
  • Les objets légers comme les structures ou les objets non-persistants utiles pour recueillir des informations d’entités transversales,
  • Des composants tels qu’un gestionnaire d’objets binaires de grande taille http pour manipuler les blobs dans des environnements web ou un gestionnaire de cache basé sur le gestionnaire de cache ASP.NET standard et plus encore.

Enfin, nous ne pensons pas que les outils puissent générer des applications entières, ce n’est pas ce que nous disons, car développer des applications est une des opérations les plus complexes qui nécessite plus qu’un accès aux données et/ou des contrôles d’IHM. Ce que nous prétendons, c’est que nous procurons un outil aux développeurs afin de les aider à construire les fondations solides de leurs applications .NET, basées sur un modèle de domaine cohérent, afin que les développeurs n’aient plus qu’à l’étendre et le compléter.

La recette que nous proposons avec CodeFluent Entities a pour finalité de créer des applications .NET basées sur une couche de domaine riche bâtie par l’outil et les développeurs, contenant toute la logique métier de votre application. Il s’agit d’une API complète et cohérente qui peut être utilisée sur les plateformes (x86, x64, bureau, web) à travers toutes les technologies (.NET 2 à 4) de sorte de sécuriser vos investissements.

Et même si vous n’envisagez pas d’utiliser notre outil, nous continuons de penser que c’ est une très mauvaise idée de suivre cette voie des ‘Modèles de domaine anémiques’ et que vous devriez créer des modèles de domaine réels, soit à la main, soit avec un autre outil qui le ferait correctement.

Daniel COHEN-ZARDI avec l’appui de l’équipe R&D de SoftFluent

Introduction à F#

Nouveau cours dans la bibliothèque Pluralsight
Par Oliver Sturm

F# est un langage de programmation multi-paradigmes qui englobe des modèles de programmation fonctionnels et orientés-objets. Il s’agit d’une variante de ML, et est devenu le langage fonctionnel ciblant la plate-forme .NET le plus important. Ce cours abordera tous les détails essentiels pour travailler avec F#, en couvrant non seulement les fondamentaux du langage, mais en montrant également les scénarios pour lesquels il est le plus adapté lors de la création d’applications .NET.

Visualisez ce nouveau cours maintenant ! (US)

image

Cascading Style Sheets 3 (CSS 3)

Nouveau cours dans la bibliothèque Pluralsight
Par Michael Palermo

Ce cours permet de découvrir de nouvelles fonctionnalités dans CSS3. Les développeurs web pourront apprendre des trucs et astuces sur comment cibler le contenu pour concevoir, améliorer le texte, comprendre les couleurs, fournir des angles arrondis, ajouter des dimensions avec des ombres, s’adapter à la taille, transformer et animer, et enfin manipuler la conception avec des scripts.

Visualisez ce nouveau cours maintenant ! (US)

image

Un meilleur CSS : LESS et SASS

Nouveau cours dans la bibliothèque Pluralsight
Par Shawn Wildermuth

CSS est un bon moyen de séparer votre conception et votre balisage au cours de votre développement HTML, mais il y a des points clés douloureux qui font que la difficulté est plus élevée qu’elle ne devrait l’être. Les langages dynamiques comme ESS et SASS permettent de rendre les feuilles de styles plus lisibles, plus pérennes, et plus faciles à écrire. Ce cours se concentre sur LESS et SASS et vous montre à quel point ces deux langages peuvent être pertinents.

Visualisez ce nouveau cours maintenant ! (US)

image

L’enseignement du code à l’école : une nécessité que feraient bien de relayer nos candidats 2012 !

Alors que nos hauts “responsables”, candidats à redresser un pays dont beaucoup s’accordent à dire qu’il est au bord de la faillite, continuent des surenchères de propositions plus ou moins excentriques voire surprenantes pour leur bord (lire le dossier de Capital pour une analyse assez pertinente de toutes ces propositions), ils pourraient légitimement s’intéresser à des tendances de fond plus prometteuses pour le développement de notre économie.

Il semble que la mentalité française reste encore fortement dominée par la protection de modèles industriels dépassés, une tendance au passage de loi inapplicables ou complexes, la création de services administratifs centralisés, l’invention de nouvelles taxes à tiroirs ou encore la désignation de boucs émissaires qui seraient responsables de nos maux (les étrangers, les riches, les expatriés…) … alors que nous entretenons ces maux depuis des décennies en reportant la charge sur les générations futures.

Ainsi, le numérique, qu’il s’agisse du potentiel économique qu’il représente, ou du levier de modernisation qu’il pourrait constituer pour nos institutions administratives, y compris l’enseignement, demeure le grand absent de cette campagne.

Pourtant, il est une tendance de fond particulièrement intéressante dont certains, de par le monde, commencent à prendre conscience. L’évolution de notre économie amène naturellement la création de valeur sur le terrain du logiciel, comme cela était exposé dans l’un de nos billets précédents sur le concept Developeronomics.

Tout récemment, un article de Slate incite vivement à l’apprentissage du code à l’école pour des raisons qui sont fort bien exposées dans l’article. Coïncidence étrange, nous développions exactement la même idée lors de l’assemblée constitutive de l’association “Fier d’être Développeur” le 22 mars dernier ! Les grands esprits se rencontrent Sourire.

Accueillant depuis plusieurs années chez SoftFluent des stagiaires de 3e pour leur faire découvrir la programmation à l’aide de l’environnement Kodu, j’ai acquis la conviction que l’apprentissage de la programmation a de nombreuses vertus :

  • Le développement de la créativité,
  • L’acquisition de capacités d’auto-apprentissage,
  • La réflexion logique abordée de manière ludique,
  • Et, pour ceux qui accrochent vraiment, la découverte d’un métier futur au potentiel illimité.
    Ce qui est intéressant, c’est que même ceux qui ne veulent pas en faire leur métier, y apprennent des choses très importantes qui leur serviront plus tard, et ce de manière amusante.
      Kodu

      Ci-contre, l’environnement Kodu de développement visuel accessible aux jeunes.

Ma fille ayant été privée d’école une journée la semaine dernière pour cause de “journée pédagogique” (sic), je l’ai accueillie pour faire son premier jeu Kodu… et elle a passé le week-end à me tanner pour que je l’installe sur l’ordinateur familial alors qu’elle n’est pas spécialement une fan d’ordinateurs !

Je formule donc le vœu que cette idée fasse son chemin et que de nombreux autres développeurs de France portent la bonne parole pour faire avancer cette cause qui le mérite, non plus pour nous, mais pour nos enfants !

Daniel COHEN-ZARDI

PDG de SoftFluent

Suivre

Recevez les nouvelles publications par mail.