Image for post
Image for post

Introduction

Nous sommes fin 2019, et l’XML est toujours en vie ! Il s’est bien incrusté dans pas mal de systèmes, et quand on veut le dégager il sort les XSD pour se défendre. Et en finance, on l’aime bien.

Nous avons été amenés récemment au court d’un projet à échanger des fichiers XML avec un partenaire. Ces XML contenaient des champs optionnels nullables.

Il y a plusieurs façons de représenter et gérer un champ nullable en XML :

  • Avec une balise vide <field></field>
  • L’attribut nil <field xsi:nil="true”></field>: la plus rigoureuse sans doute, et esthétiquement la plus moche
  • Ne pas afficher l’élément, à la…


Image for post
Image for post

L’Exception du framework

Considérons ce code simple :

Comme nous pouvons voir ce code renverra une exception due à des identifiants dupliquées dans notre liste que nous avons choisi d’utiliser en tant que clés dans le dictionnaire à créer. Le problème c’est que le message d’exception est (très) loin d’être précis. Il nous aide nullement dans l’identification de la (ou les) clés dupliquée(s).

Image for post
Image for post
tout ce que nous aurons, est ce message !

Comment pouvons nous l’améliorer ?

Image for post
Image for post
Ma tête en pleine réflexion

La nouvelle Exception

Cette exception héritera de ArgumentException et sera utilisée au lieu de cette dernière dans le cas des clés dupliquée. Nous allons voir son utilisation dans ce qui suit.

La première solution : le grouping

Une des solutions les plus directes est de faire un grouping avec la clé.
Nous pouvons utiliser ce code dans le block catch pour renvoyer la liste de toutes les clés dupliquées dés la première erreur…


Image for post
Image for post

I’ve always been fascinated by disciplined people. I’ve always wondered what was the secret behind their constant performance, their continuous productivity, and the great energy they exerted while fulfilling their tasks.

I know that everything is a matter of talent with a lot of hard work, but I just couldn’t find the formula to consistency. So the question remained: How can we vanquish procrastination, be regular on day-to-day tasks. How to raise above and achieve excellence.

Then, one fine day, I came across this wonderful book : The power of Habit. The author was explaining how habits guide our lives. He suggests techniques to start or change some of them as some habits could bring along others. …


Image for post
Image for post
“La paresse est la mère de toutes les inventions en technologie !” John Sloth

L’attribut en manque d’Amour

Un des plus anciens attributs en .NET, présent dès les premières versions du Framework , et sans doute l’un des plus méconnus est : DebuggerDisplayAttribute .

Il nous permet, en un coup d’œil, de voir le contenu d’un objet en session de Debug sans avoir à cliquer partout comme un fou furieux pour chercher des champs spécifiques, ou à utiliser la fenêtre Immediate, ou à polluer le code avec des lignes supplémentaires compilables en #DEBUG.

Cet attribut, en débogage, a un effet quasi équivalent au ToString() sauf qu’à la différence de ce dernier il nous permet d’insérer des informations exclusivement destinées au développeur sans avoir à implémenter aucune méthode. …


Image for post
Image for post

This is an extract of a book I found in O’Reilly site when I was looking for a nice definition of “The boy scout Rule” . What better definition can we read than the one of Uncle bob :).
The book reference is at the end. Enjoy.

“The Boy Scouts have a rule: “Always leave the campground cleaner than you found it.” If you find a mess on the ground, you clean it up regardless of who might have made the mess. You intentionally improve the environment for the next group of campers. …


Image for post
Image for post
Mr freud duck is keen to analyze your code and personality

One fine day, I called my colleague to ask him about a spooky thing going on my code. I spent 15 minutes staring at this awkward error but couldn’t solve the mystery. I didn’t understand why it wasn’t working ! I Got annoyed because it looked obvious, and then called him to the rescue. As he sat beside me, I started explaining what I did, step by step. Then, suddenly, I had the “AHA ! I got it now !” pop-up in my head ! I found what caused this little dirty bug only by speaking about it. …


Image for post
Image for post

Have you even asked a team mate about a quick and dirty code he made and the answer was “it’s always been done like this” , or “I know it’s not optimal but I’m only consuming legacy code” , or even “does it really change something to what was there before ? it’s already a mess”. I bet you have.

Have you seen people in open air summer concerts throwing trash in certain spots because it was “already dirty” ? I bet you have too.

This brings us to an interesting theory called : The broken window theory.

Per wikipedia


Image for post
Image for post

Le cauchemar du développeur

Soyons honnêtes, à moins d’être le descendant direct de MacGyver, aucun de nous ne raffole de travailler sur du legacy code. Sa maintenance est loin de présenter le coté le plus sexy du métier du développeur. Gérer le legacy est un défi, une opération laborieuse; il faut être doté du bon état d’esprit et des bons outils avant d’y plonger.

Mais qu’est ce que le “legacy” ?

Par habitude, on appelle un code legacy (pour dire « héritage ») si :

  • Il ne contient pas des tests unitaires / d’intégration
  • Il n’est pas (assez) documenté, ne contient pas (suffisamment) de logs
  • On ne comprend plus toutes ses subtilités et toute sa logique (boite…


Image for post
Image for post

Introduction

Dans ce bref article nous allons voir comment implémenter des tests unitaires pour nous assurer que notre configuration d’injection de dépendance dans ASP.Net Core est correcte.

Nous utiliserons le conteneur d’injection fourni par défaut par le framework qui se trouve sous le namespace Microsoft.Extensions.DependencyInjection.

Pour voir le source code du project, cliquez ici.

Pourquoi tester l’injection de dépendance ?

L’intérêt des tests unitaires et d’intégration en général est d’assurer le bon déroulement de l’exécution, c’est à dire l’état et le comportement correct de notre code en runtime.

Une erreur dans la configuration de l’injection de dépendance peut passer inaperçue au moment de la compilation mais crasher à l’exécution. …

About

Slim Ayache

Software developer (and I like it). I Speak AR, FR, EN. Interests in photography, music, books and one billion other things.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store