I’ve recently stumbled on a seemingly simple issue. If you have a Composite pattern, how do you create an Adapter pattern for it? In other words, if we want to create a wrapper for a set of classes in a composite, how do you map this while hiding the composite classes themselves? Read more…
Même si je dois avouer que garder la maison propre n’est pas mon point fort, lorsqu’il est question de conception la structure est de mise. Peut-être justement parce que je sais pertinemment que je vais oublier des tests unitaires et laisser traîner des stubs. Un point central de cette structure est la gestion d’exceptions. Jusqu’ici, cette bonne habitude s’avère payante, puisque les erreurs sont détectées rapidement, sont faciles à comprendre et sont supportés par de bons outils de suivi. Pourtant, une fois en production, ce même avantage peut être catastrophique lorsqu’on n’a pas un contrôle direct sur l’environnement final; le système plante simplement plus souvent! C’est pourquoi, dans certain cas, il est avantageux de conceptualiser en fonction d’un échec.
Read more…
J’aime beaucoup le refactoring. Ça n’a pas toujours été le cas! Pendant longtemps, j’ai cru que la façon la plus efficace d’écrire du code était de parfaitement conceptualiser l’ensemble de l’application. Un jour, pourtant, je me suis rendu compte qu’il était peut-être sage de commencer à écrire du code tôt. En effet, on peut ainsi mitiger certains risques, avoir un feedback fonctionnel plus rapide, et permettre d’établir certaines bases de travail pour une équipe.
Read more…
Combien de fois par jour répétez-vous les mêmes actions? Copier des fichiers, vous authentifier chaque fois que vous compilez, effacer des fichiers temporaires, copier-coller des valeurs… probablement plus souvent que vous ne le croyez. Plus souvent on recommence une même activité, plus elle devient naturelle, automatique, et moins on se rend compte du temps qu’on passe à la faire. Résultat, votre temps “productif” est réduit, au profit d’actions démotivantes et répétitives. De plus, votre concentration est constamment compromise. Il existe pourtant un grand nombre d’outils prévus pour accélérer votre travail, prêts à être utilisés. Surtout, vous êtes en mesure de créer vos propres outils, plus adaptés que tout ce que vous pourriez trouver ailleurs. C’est une tâche plaisante et motivante qui optimisera votre temps, minimisera les perturbations et réduira les risques d’erreurs.
Lisez la suite de cet article sur notre nouveau site, christianrondeau.net
Il y a de cela quelques mois, je naviguais sur un petit site Flash qui se vantait de pouvoir deviner mes pensées. Assoiffé de mystères à élucider, me voilà qui pense à un nombre, suis les instructions et surprise! Le symbole associé au nombre auquel j’ai pensé est affiché, auréolé d’étoiles.
Read more…
Cet article est en réalité un courriel répondant à une question sur les bonnes pratiques avec les exceptions. S’il peut être utile à quelqu’un, tant mieux!
Read more…
Une grande question, difficile à répondre; dans quelle langue doit-on déclarer ses variables, méthodes et classes? Dans quelle langue devrait-on écrire ses commentaires?La syntaxe
Premièrement, il faut noter que je suis un francophone aguerri, prêt à bondir pour défendre sa langue. Mais, car il y a un mais, un problème survient; lorsqu’on développe une application, on utilise un langage de programmation. Ce langage est en quelque sorte une langue à part, un sous-ensemble de l’anglais. Sa structure et ses mots correspondent à l’anglais. Quels sont les impacts? Une lecture naturelle.
Read more…
Un petit article sur un détail important mais qui, je crois, n’a pas été beaucoup discuté; le nombre d’appels sur des objets dans une ligne de code.
Prenons par exemple la ligne de code suivante, ou employe est un paramètre de méthode:
int assignements = employe.GetHoraire().GetAssigments(this.jourEnCours).Length;
Elle peut paraître exagérée pour certains, mais elle représente plusieurs cas que j’ai vu et que j’ai fait. Beaucoup auront prévu le coup; en production l’erreur suivante est lancée:
Object reference not set to an instance of an object.
Read more…