Les liens de la semaine – Édition #138

Développement

.NET

Web

Technologie

Science et autres

Six refactorings pour améliorer la lisibilité de votre code

C’est en discutant avec un collègue de refactoring et de qualité de code que m’est venue l’idée pour ce billet. Dans ce billet, je présente quelques transformations que j’ai l’habitude de faire à du code existant. Il s’agit aussi de la façon que j’ai d’écrire mon C#.

Pour moi, le critère le plus important en revue de code est de comprendre facilement l’intention de l’auteur vis-à-vis le problème à résoudre. Au moment de faire une revue de code, ma règle d’or est que je dois être en mesure d’avoir une bonne idée du problème à résoudre uniquement à la lecture de vos commits. Imaginez, si je ne suis pas en mesure de le deviner à cet instant, la tête que fera le développeur dans six mois lorsqu’il sera temps de faire évoluer vos changements.

Le code que vous produisez est la meilleure documentation que vous pouvez laisser aux développeurs qui vont vous succéder dans le futur. Assurez-vous qu’elle soit la plus claire possible. Évidemment, tout est une question de contexte. Autrement, un hack est une mesure exceptionnelle pour un cas exceptionnel. Il faut toujours garder cela en tête.

Alors donc, sans plus tarder, voici ce dont il est question!

Ordonner les directives using

L’ordonnancement des directives using a un seul but: donner un peu l’impression d’ordre et de rangement dans le code. En plus, ce refactoring est possible dans Visual Studio sans l’intervention de ReSharper. Il suffit de faire un clic droit sur les usings et de visiter le menu Organize Usings.

Sceptique? Ne me dites pas que vous préférez


using System.Linq;
using Castle.MicroKernel.Resolvers.SpecializedResolvers;
using System.Net.Http.Formatting;
using System.Reflection;
using Castle.MicroKernel.Registration;
using Castle.Windsor;
using Castle.Windsor.Installer;
using Core;
using Filters;
using Formatters;
using System.Web.Http;
using System.Web.Http.Dispatcher;
using Plumbing;

à celle-ci


using Castle.MicroKernel.Registration;
using Castle.MicroKernel.Resolvers.SpecializedResolvers;
using Castle.Windsor;
using Castle.Windsor.Installer;
using Core;
using Filters;
using Formatters;
using Plumbing;
using System.Linq;
using System.Net.Http.Formatting;
using System.Reflection;
using System.Web.Http;
using System.Web.Http.Dispatcher;

n’est-ce pas?

Toujours inclure les accolades

Selon moi, il n’y a pas de bonnes raisons de ne pas vouloir mettre d’accolades pour entourer les différents mots clés d’instructions de C# (ou de tout autre langage équivalent).

Le cas le plus commun est l’écriture d’if simple où la condition sert à protéger l’exécution d’une seule ligne de code comme ceci.


if (batch != null && batch.Any())
return batch;

view raw

no-accolades.cs

hosted with ❤ by GitHub

En général, ça marche bien. Là où c’est problématique, c’est à l’instant où vous allez voir ajouter une deuxième instruction sous cet if. Du point de vue de la maintenabilité, c’est un non-sens. Incluez toujours les accolades, vous allez vous sauver des maux de têtes à long terme.

Des propriétés ou instantiantions avec des accolades et des sauts de lignes

Du code, c’est comme une plante, ça a besoin de respirer. Vous avez probablement vu, vous aussi, un bon lot de propriétés toutes petites, entassées dans un amalgame d’accolades sur une seule ligne. Je me dis toujours que ce n’est pas 4-5 lignes de code avec des accolades qui va faire une différence. En plus, on gagne en visibilité et en clarté.


protected string SectionName
{
get
{
return SectionReferential.HomePage;
}
}

view raw

props.cs

hosted with ❤ by GitHub

Sauts de ligne avec l’opérateur ?:

L’introduction de l’opérateur ?: a permis aux développeurs C# ce simplifier l’écriture de certaines conditions en donnant un raccourci syntaxique. Il est très pratique à utiliser. En particulier lorsque vous avez une seule condition à tester.

Dans ce cas-ci, aussi, je préfère avoir les branches d’exécution sur des lignes distinctes. Cela a pour avantage de distinguer clairement les trois segments en relation avec cet opérateur.


string.IsNullOrWhiteSpace(environment)
? environment.ToLowerInvariant()
: CurrentEnvironment;

view raw

?:.cs

hosted with ❤ by GitHub

Chaînage des méthodes

J’ai eu énormément de discussion, dans le passé, sur cette façon de formater les appels de méthodes chaînées. Je trouve que d’avoir des appels comme le suivant sur une seule ligne révèle très peu sur les intentions du code. Comme si l’auteur tentait de cacher quelque chose dans un tas d’instructions qui se suivent.


Repository.GetAllById(24).Where(p => p.Country == "Canada").Select(p => p.UniqueIdentifier).ToList()

view raw

no-chain.cs

hosted with ❤ by GitHub

Je préfère avoir mes méthodes chaînées mises en page de cette façon. De plus, l’avantage n’est pas seulement pour la lisibilité. Lorsqu’il est temps de modifier un des appels du groupe, il est plus facile de procéder à modifier une seule ligne que tout le groupe sur la même ligne.


Repository
.GetAllById(24)
.Where(p => p.Country == "Canada")
.Select(p => p.UniqueIdentifier)
.ToList()

view raw

chain.cs

hosted with ❤ by GitHub

Toujours éliminer les lignes vides superflues

À l’œil, cela ne trompe pas. Lorsqu’une classe est correctement espacée, ça donne toujours une bonne impression au moment de faire une revue de code. C’est comme entrer dans une maison qui sent bon.

C’est facile de laisser glisser un espace ou deux par inadvertance. Lorsque je repasse les sauts de ligne dans une classe, j’essaie de m’en tenir à la règle de pouce suivante:

  • un saut de ligne entre les méthodes
  • un saut de ligne entre les usings et la déclaration de classe ou de namespace
  • éliminer le saut de ligne superflu en fin de classe

Les liens de la semaine – Édition #137

Développement

.NET

Technologie

Web

Des conseils pour un développeur débutant sur le marché du travail qui se cherche un premier emploi

Il y a quelques semaines de cela, un lecteur dont je vais garder l’identité anonyme m’a écrit un courriel au sujet de la recherche d’emploi.

Bonjour,

Suite à votre article à propos du DEC informatique, j’ai eu envie de vous contacter pour demander des conseils pour trouver un premier emploi en informatique, si vous le voulez bien.

J’habite à Montréal et j’ai étudié au Cégep du Vieux-Montréal. Je n’ai pas toujours cherché activement depuis décembre (1-2 mois chez ma famille en Abitibi), mais j’ai envoyé quand même beaucoup de CV et lettres de présentation. J’ai eu quelques entrevues qui ont bien été, mais, au final, j’ai encore rien de stable.

J’aime l’informatique, j’ai des idées de projet et je veux tout apprendre, je sais, par exemple, qu’un GitHub avec des projets intéressants à montrer peut aider, mais j’ai du mal à me concentrer sur un projet personnel sans stabilité financière.

Il y a assez d’offres d’emploi en informatique à Montréal, mais, pour beaucoup, il faut des années d’expérience ou il y a beaucoup de personnes qui postulent. Comment se démarquer?

Ce courriel est arrivé à un drôle de moment, je dois avouer. À la fin avril, j’étais, moi aussi, en processus de changer d’emploi. Il faut croire que je n’étais pas seul à avoir la tête à l’emploi!

À la fin de mes études, j’étais aussi angoissé à l’idée de me trouver un emploi. Mon inexpérience faisait en sorte que je n’avais pas une bonne idée de ce qui pourrait m’attendre sur le marché du travail. Se trouver un emploi en développement logiciel, à notre époque, n’est pas vraiment une histoire compliquée. Ce qui est plus difficile, c’est de trouver un emploi de qualité et qui répond à nos attentes professionnelles.

Trouver son créneau

La beauté du développement logiciel, c’est qu’il y a une multitude de voies possibles pour une carrière. Il est possible de considérer faire du développement dans virtuellement n’importe quel domaine d’affaires. Passionné de géomatique? Pensez à Google Maps. Comptabilité? Il y a une quantité astronomique de logiciels de gestion des finances ou permettant de faire des déclarations d’impôts. Développement web? Je pourrais vous en parler longtemps. D’ailleurs, vous êtes en ce moment sur une page web. Pensez-y.

En début de carrière, il peut être un peu étourdissant de penser à ce que l’on va faire 5, 10 ou même 20 ans à l’avance. Il est inutile de penser ainsi. En particulier dans un domaine les choses évoluent assez rapidement. Une approche à court et moyen terme est préférable.

Ce qui peut faciliter le plus l’entrée sur le marché du travail c’est de choisir un secteur en forte demande. Par exemple, en ayant travaillé là bas, l’agence où j’ai précédemment œuvré recrute activement dans le domaine du e-commerce pour la plateforme Magento utilisant PHP. Pour faire une bonne partie de mes achats en ligne, le e-commerce peut être une bonne voie d’entrée pour un développeur à la recherche d’expérience.

Forger son identité

Au moment de l’entrevue, lorsque l’on vous posera la question « parlez-nous un peu de vous ». Qu’allez-vous répondre? Si vous n’êtes pas préparé et, surtout, si vous n’avez rien à présenter.

Lorsque j’ai parti French Coding, c’était avant tout pour me permettre de laisser une trace sur ce que je faisais dans mes temps libres. Tant qu’à faire des expériences, aussi bien les partager sur l’internet, n’est-ce pas? Toutefois, avec le temps, ce blogue est devenu un reflet de ma personnalité et de mes opinions dans le domaine.

C’est en rediscutant, après mon embauche, avec la personne responsable du recrutement que mon blogue a été un facteur dans les critères d’embauche. Après trois ans à avoir blogué activement, je peux dire que je n’ai pas blogué pour me trouver un emploi, mais que mon blogue m’a aidé à trouver un emploi. Il y a une nuance bien importante.

Il y a d’autres façons qu’un blogue de se promouvoir dans le domaine. De nos jours, j’ai vu des développeurs faire usage des plateformes comme Twitter, Stackoverflow et même GitHub pour se faire connaître. Pour l’essentiel, il faut que vos contributions soient publiques.

Avoir au moins un ou des passe-temps

S’il y a une leçon que le marché du travail m’a enseignée, c’est qu’il y a une vie après le travail. L’avantage est double. C’est important de se développer des passe-temps afin de se donner de la perspective sur la vie professionnelle et de vous découvrir comme humain.

Faites du sport, bricolez, passez du temps avec votre famille et faites-vous des amis, c’est l’essentiel du message ici. Il y a une vie après le travail.

Ne jamais cesser d’apprendre

La majeure partie de votre carrière dépend de votre attitude vis-à-vis les différents défis que vous aurez à faire face. Avoir le désir d’apprendre est l’attitude clé qui fera que vous aurez du succès dans le domaine. En particulier des échecs que vous subissez.

Si vous ne tentez rien, vous n’aurez rien.

Il y a toujours quelque chose à apprendre. Comme le slogan utilisé dans le film Meet the Robinsons le dit: « Keep moving forward« .

Bonne chance dans vos projets!

Les liens de la semaine – Édition #136

Développement

.NET

Web

Technologie

Science et autres