Monsieur Trump, Comment le FBI a-t-il pu Analyser 650 000 Emails en 8 jours (Explications)

 

image001

Lors des dernières présidentielles, en toute fin de parcours le FBI a blanchi Mme Clinton suite à l’analyse de plus de 600 000 courriels. De son coté, M. Trump a formulé un fait des plus intéressants, bien que rempli de sarcasmes !! 

« Le FBI blanchit (encore) Clinton : il a analysé 650 000 emails en 8 jours (contre 10 mois pour en lire 30 000 la 1ere fois) » Référence : http://theweek.com/speedreads/659966/trump-advisers-insist-fbi-couldnt-have-examined-650000-emails-8-days

La réponse peut sembler complexe, mais elle est en fait toute simple : la voici !

En se basant sur un Algorythme Sémantique, les spécialistes informatiques sont en mesure d’analyser l’ensemble des courriels (les 650 000 célèbres courriels en l’occurence) pour en extraire les concepts clés basés sur des critères prédéfinis par le FBI. De cette façon, le FBI est en mesure d’identifier clairement les courriels dont les contenus se rapportent directement à des éléments qui auraient pu inculper Mme Clinton. Au final, c’est peut-être quelques dizaines de courriel qui ont été lus par les agents du FBI, la grande majorité des courriels ayant été analysés de manière automatisée.

Mais comment ça fonctionne ?

La Sémantique transforme ainsi les données non structurées en utilisant le traitement automatique du langage naturel (TALN), des heuristiques, la nature grammaticale des mots et la reconnaissance de modèles. La puissance de l’architecture du moteur de règles permet à l’API Sémantique de s’adapter et s’ajuster aux besoins d’information spécifiques et aux domaines d’affaires.

Voici un exemple du fonctionnement :

 image002 

On voit ici clairement l’extraction des concepts clés du document suivant :

·         Location
·         Company
·         Concept
·         Date
·         Amount

Autre exemple :

image003 

 

Cher M. Trump, avec les outils et l’expertise de pointe qui existent actuellement sur le marché, il est en effet véridique d’admettre qu’une telle vérification est possible et ce très aisément.

Pas seulement pour le FBI !

Les outils d’analyse sémantique ne servent pas qu’aux agents du FBI ! Cette technologique est désormais disponible pour les entreprises. Elle permet notamment de dresser un inventaire complet des fichiers de votre organisation. Cet outil est particulièrement utile pour identifier les doublons en circulation ou pour découvrir si des informations sensibles sont stockés à des endroits vulnérables, comme par exemple le poste de travail d’un employé. 

En partenariat avec Coginov, nous pouvons implanter cet outil d’analyse dans votre organisation et vous accompagner dans l’analyse des résultats.   

 

Rendre le ruban « Format text » disponible dans une page d’application SharePoint

En travaillant sur l’intranet d’un client dans SharePoint, j’ai eu besoin de permettre d’éditer du texte avec le ruban de SharePoint dans une page d’application. J’ai pensé que ça pourrait être utile à d’autres personnes alors j’ai décidé de partager la solution.

Premièrement, il est important de noter que le comportement désiré s’applique sur un div et non une boîte de texte. Donc, une fois la page d’application créée, il faut ajouter un div à l’endroit où on veut le champ pour éditer le texte. Ce div doit avoir les classes suivantes : « ms-rtestate-field ms-rtestate-write ms-inputuserfield ms-long ».  Il faut aussi lui assigner « this.contentEditable=’true’; » pour l’événement onclick.

Div éditable - html du div

Lors d’un postback, le div perd le texte saisi. Il faut donc implémenter une façon de conserver le contenu. Il faut donc ajouter un contrôle hidden dans la page et l’utiliser pour conserver le texte. J’ai donc ajouté les fonctions JavaScript suivantes :

Code js pour conserver le contenu du div au reload

La fonction « TransfererHtmlDansControleCache » est appelée par l’événement onclick du bouton « Enregistrer » dans ma page d’application. Dans mon cas, j’ai besoin de conserver le contenu dans le property bag afin que l’utilisateur puisse l’éditer à nouveau quand il retourne dans la page d’application et afin de pouvoir y accéder de partout.

Il est important aussi de rendre le ruban visible dans la page en ajoutant le code suivant dans la fonction « Page_Load » :

Code c# pour afficher le ruban

Et voilà, c’est maintenant prêt à être utilisé !

Div éditable - Pas le focus

Afin que l’utilisateur puisse rapidement repérer la zone d’édition, j’ai ajouté un contour au div. Comme vous pouvez le constater, le ruban n’est pas disponible au départ. Il faut cliquer dans le div pour que celui-ci apparaisse. L’onglet pour insérer certains contrôles est également disponible.

Div éditable - Onglet Format textDiv éditable - Onglet Insert

Le bouton « Aperçu » permet d’afficher le contenu qui a été enregistré dans le property bag. Comme vous pouvez le constater, les styles s’appliquent bien lorsque le texte est affiché dans une autre page.

Exemple du popup

Bon développement !

Référence

http://blog.bonzai-intranet.com/analysthq/2014/09/cross-browser-richtext-editor-solution-for-sharepoint/

Les paradoxes de la société du savoir

Il ne fait plus aucun doute maintenant que nous sommes entrés dans l’ère de la société du savoir. En l’espace d’à peine 20 ans, Internet a bouleversé de manière profonde l’humanité toute entière et nous commençons à peine à en comprendre les différents impacts.

À mon avis, il reste encore un pas important à accomplir dans cette nouvelle ère. En effet, si nous bénéficions à chaque jour des bienfaits de cet accès facile à l’information, nous avons encore beaucoup de difficulté à en reconnaître la vraie valeur.

Bien que nous soyons enclins à dépenser pour le matériel donnant accès à Internet (téléphone, tablette, connexion Internet, etc.), nous sommes encore très réticents à mettre le même montant sur le contenu que l’on consomme. Pourtant, à quoi servent ces appareils sans contenus

Internet, en démocratisant la diffusion de contenu, a offert au monde le moyen de partager son savoir sur une base volontaire. Cette notion de partage est au coeur de la révolution d’Internet, avec des initiatives comme Wikipédia, la culture du logiciel libre ou encore l’engouement pour les médias sociaux.

La valeur des contenus est incomprise

Cette culture a cependant créé des effets pervers. Tout d’abord, elle laisse croire que toutes les informations ont la même valeur.

Par exemple, n’importe quel blogueur peut colporter des rumeurs sans fondement, avec sensiblement la même crédibilité d’un journaliste établi qui prend un soin jaloux de valider ses sources.

Un autre exemple est la culture du piratage de contenu, que ce soit des photos, de la musique, des films ou des logiciels. On oublie que les créateurs de ces contenus ont mis du temps, des efforts pour produire ces contenus et qu’ils les partagent sur le Web pour se faire connaître, pas nécessairement pour donner le fruit de leurs créations.

Certains diront (surtout dans le cas de la musique ou des films) que les studios sont déjà assis sur des fortunes et qu’ils n’ont pas besoin de notre argent. C’est paradoxal d’affirmer cela tout en donnant des centaines de dollars à Apple, à Samsung et aux autres Bell de ce monde, non ?

Reconnaître la valeur des contenus que nous consommons.

Premièrement, pouvoir faire la différence entre un contenu donné et un contenu partagé. Par exemple, si je publie une vidéo qui explique comment faire la tarte au sucre de ma mère, vous êtes libre d’essayer la recette à la maison, je n’attends pas de royauté de votre part. Par contre, lorsque je publie une photo sur Flick’r ou 500px, je la partage. Vous pouvez admirer la photo, mais vous n’avez pas la permission de copier ma photo pour décorer votre salon ou votre présentation PowerPoint.

Pour faire face au piratage, le milieu de la musique est en train de passer du contenu partagé au contenu donné. Alors que dans les années 80 et 90, les artistes tiraient l’essentiel de leurs revenus sur la vente d’albums, les chansons servent maintenant à mousser les concerts, dont le prix des billets a explosé dans les dernières années.

La location par abonnement est également de plus en plus populaire, que ce soit NetFlix pour les films, Spotify pour la musique ou Adobe Creative Cloud et Office365 pour les logiciels. La facture, plus modeste, rend ces produits plus attirants pour plusieurs utilisateurs.

Deuxièmement, il faut trouver normal de payer pour un contenu de qualité. À mon avis, pour chaque dollar dépensé en équipement, nous devrions être prêts à payer deux dollars pour du contenu. Par contenu, j’inclus une licence pour un logiciel, l’achat ou l’abonnement à un service d’accès à de la musique, aux films, aux photos, aux livres et bien d’autres.

En encourageant les producteurs de contenus, on s’assure de créer un écosystème en santé en motivant les créateurs à poursuivre leur mission.

 

 

 

Les qualités d’un bon chargé de projets TI.

Récemment, j’avais une discussion sur les qualités que devait avoir un bon chargé de projet TI, ou de manière plus large, qu’est-ce qu’un bon leader? Nous avons parlé de l’importance d’avoir une vision et des objectifs clairs, d’inspirer les membres de l’équipe à atteindre ces objectifs et de trouver le juste équilibre dans l’autonomie à donner dans l’exécution des tâches.
J’ai continué ma réflexion après coup pour essayer de trouver une image forte qui résumait notre pensée. Cette réflexion m’a amené du côté des jeux vidéos. Qu’est-ce qu’un jeu vidéo au fond?

  • Un petit groupe de tâches à exécuter en vue d’un objectif précis.
  • Une gratification immédiate une fois l’objectif atteint, soit une valorisation accompagnée d’une amélioration des habiletés.
  • L’accumulation de ces objectifs doit mener à la réussite d’une mission plus globale.
  • Et surtout, la réalisation de tout cela doit se faire dans un esprit de compétition à caractère ludique.

Donc, à mon avis, le défi d’un chargé de projet se résume à convertir son projet, à un niveau conceptuel, à un jeu vidéo.

  1. Bien transmettre à l’équipe comment compléter le jeu.
  2. Découper son projet en « tableaux ».
  3. Trouver le bon niveau de difficulté pour chaque tableau afin que l’employé puisse se dépasser.
  4. Le gratifier à la fin de chaque étape réussie et lui montrer les compétences acquises par ce tableau.
  5. Amener l’équipe à s’unir lorsqu’un tableau est trop complexe à compléter seul.
  6. S’assurer de garder une atmosphère de franche camaraderie tout au long du projet.

Qu’en pensez-vous?

 

SP2016 , Référentiel Unique pour les documents

Il va sans dire, SharePoint est une plateforme de gestion documentaire de référence dans le domaine de la documentation « Active ». Toutefois, depuis la version 2001 (Ça ne me rajeunit guère!), une grande lacune l’accablait ; le référentiel du document était son nom qui était contenu directement dans l’Hyperlien  plutôt qu’un GUID unique permettant d’identifier le document.

Voila chose possible !! Crions au Miracle !! 🙂 Bien que par défaut, SharePoint demeure identique a ses versions antérieures, il est maintenant possible d’activer une fonctionnalité de collection de Site « Document Id Service » qui assignera un guid Unique pour chaque document.

FonctDocID.png

En effet, la faiblesse de voir le nom du document dans l’hyperlien générait une problématique importante pour toutes les références vers ce document lorsque celui-ci était soit déplacé ou simplement renommé … Les références devenaient toutes invalides ..

Exemple problématique :
https://urlDeVotreSite/documents/NomDuFichier.pptx   est renommé  https://urlDeVotreSite/documents/NomDuFichier12345.pptx  –> Les liens vers le documents sont tous brisés

Grâce à l’activation de cette fonctionnalité, le document précédent est référencé de la façon suivante :

https://urlDeVotreSite/_layouts/15/docIdRedir?ID=GUIDDUDOCUMENT

Le fait de renommer le fichier ou de le déplacer à l’intérieur de la collection de sites n’aura aucune incidence quand à ses référencement.

Bravo Microsoft ! Bravo SharePoint 2016 !

 

 

 

 

SharePoint 2016 et la synchronisation des profils

La synchronisation des profils

Mon collègue Charles Gagnon vous présentait récemment les fonctionnalités disparues dans SharePoint 2016. Celles-ci  sont, pour la plupart, des éléments de SharePoint difficiles à configurer et problématiques que la communauté sera très heureuse de voir disparaître.

Rendu artistique des émotions d'un administrateur SharePoint par rapport à FIM

Rendu artistique des émotions d’un administrateur SharePoint par rapport à FIM Crédits photo: http://goo.gl/DzNff7

Une composante ayant certainement causé des maux de tête (voire des cauchemars) à la quasi-totalité des administrateurs SharePoint dans les versions 2010 et 2013 du produit est le «User profile synchronization service» basé sur l’outil Forefront Identity Manager (FIM) avec l’infâme message d’erreur «stuck at starting». Vous pouvez maintenant arrêter la thérapie; cette fonctionnalité est éliminée dans SharePoint 2016 et est remplacée par deux outils distincts interchangeables selon vos besoins et la complexité de votre installation.

Le mécanisme de synchronisation natif pour les profils usagers se nomme maintenant «Active Directory Import». Comme son nom l’indique, l’outil permet de synchroniser les données d’une source Active Directory et de rendre celles-ci disponibles dans les profils usagers (la couche sous-jacente au «My Site») SharePoint. Ce mécanisme est intégré à SharePoint et ne nécessite aucune configuration particulière mais il comporte plusieurs limitations décrites plus bas.

Le deuxième outil à votre disposition vous permet de mettre en place des scénarios de synchronisation beaucoup plus complexes. Celui-ci est basé sur le produit Microsoft Identity Manager (MIM) et est indépendant de SharePoint c’est à dire qu’il nécessite la mise en place et l’installation d’un serveur séparé de la ferme SharePoint (pas 100% obligatoire mais fortement recommandé). Un point avantageux de cette architecture est qu’elle permet à plusieurs batteries de serveurs d’utiliser la même installation de MIM dans une même organisation.

Le déploiement de MIM nécessite des efforts supplémentaires mais cette option permet de supporter des scénarios plus complexes, de se connecter à des sources de données autres que AD et de faire circuler l’information de façon bidirectionnelle entre SharePoint et les sources de données.

MIM server AD Import
Avantages 1.       Configuration flexible permet de personnaliser les importations.
2.       Permet de supporter les flux bidirectionnels.
3.       Permet d’importer les photos des usagers automatiquement.
4.       Support des sources de données autres qu’Active Directory LDAP.
5.       Supporte les scénarios «multi-forest».
1.       Très rapide et performant.
2.       Mécanisme fiable utilisé par Office 365.
3.       Complexité réduite et administration directement dans l’administration centrale de SharePoint.
Inconvénients 1.       Un serveur séparé pour MIM est recommandé pour l’utilisation avec une ferme SharePoint.
2.       L’architecture, la configuration et le déploiement sont plus complexes.
1.       Importation unidirectionnelle.
2.       Supporte uniquement les scénarios avec une seule forêt AD.
3.       Ne permet pas d’importer les photos des usagers.
4.       La seule source de données supportée est AD LDAP.

Pour plus d’informations sur la configuration et le déploiement de MIM, consultez l’article technet suivant : https://technet.microsoft.com/en-us/library/mt627723(v=office.16).aspx (l’article technet est en pre-release au moment d’écrire ce billet, son contenu est donc sujet à changer.)

Question ouverte: Croyez-vous que la capacité de MIM d’être utilisée par plusieurs fermes SharePoint est compatible avec des environnements autres que la production? Serait-il possible de configurer un seul MIM pour l’organisation (dans le cas d’un flux unidirectionnel des données) en production et de consommer celui-ci dans les environnement de DEV qui, la plupart du temps, se connectent déjà vers des AD en production? J’attends vos réponses dans la section commentaires ou sur linkedin!

SharePoint 2016 ! Les fonctionnalités disparues

SharePoint 16 RC est maintenant disponible pour le grand public ! HouuRRA!

9cfc1fc6-5a27-4608-9e6f-5b6cab5f7132.png

Mais qu’en est-il ? Offre t-il une valeur ajoutée immédiate justifiant le remplacement de SharePoint 2013 ?!

Au cours des prochains jours je vais publier une série de billets présentant mes différents essais et les constats que j’en aurai fait.

En premier lieu, les départs … voici un sommaire des éléments retirés de cette nouvelle version

  • Version StandAlone sur une instance SQL Express.  En effet, la version complète de SQL doit être maintenant installé  .
  • SharePoint Foundation n’existe plus.
  • Forefront Identity Manager (FIM) n’est plus utilisé pour la synchronisation de l’active Directory . Le processus par défaut est l’imporation de l’Active Directory (Unidirectionnel). Microsoft Identity Manager 2016 peut être configurer pour gérer la synchronisation entre SharePoint et AD .
  • Excel Services ne fait plus parti de SharePoint. Il a été migré vers Excel Services Online et les usagers de SharePoint pourront consommer le service depuis cet endroit.
  • SharePoint Designer 2016 ne verra jamais le jour ! Designer 2013 continuera d’être supporté.
  • InfoPath 2013 sera la dernière version de Microsoft, mais sera supportée jusqu’en 2026! InfoPath Forms Services sera supporté.

Je vous laisse le temps de faire votre deuil de ces fonctionnalités disparues, dès le prochain billet nous prenons un nouveau départ avec les innovations de la version 2016 !

 

 

Gens des TI, soulevez-vous! (2e partie) : rêvons un peu

Ce billet est la suite de Gens des TI, soulevez-vous!. Suite à mon constat sur le manque d’évolution des outils bureautiques, je me suis demandé quel serait mon environnement de travail idéal, en terme d’outils technologiques.

Voici ma liste de souhaits pour les prochaines années :

Plus de pixels!

Homme devant un schéma d'idées

Je dois souvent traiter des volumes importants de contenus. Ce n’est pas rare d’avoir à travailler avec un « mindmap » (pensez à un organigramme dans Visio) de plus de 1000 éléments!

Croyez-moi, même les écrans HD présentement sur le marché sont bien trop petits pour mes besoins.

Récemment, j’ai également eu à produire un fichier Excel qui, une fois imprimé, faisait environs 1×2 mètres! Comment voulez-vous travailler efficacement un fichier de cette taille sur un moniteur de 55x35cm? Je ne voyais qu’environ 20% du fichier à la fois.

Il faut repenser la manière de travailler à l’écran. Avec une surface, disons de 1 mètre carré, le modèle clavier / souris devra être repensé, et le tactile doit être intégré selon de nouveaux paradigmes.

L’intranet mobile

Je ne devrais jamais recevoir une convocation par courriel. Tous les événements de l’entreprise, comme les comités, les formations et les 5 à 7 devraient être accessible à partir de l’application de calendrier de mon téléphone intelligent.

De plus, ma liste de contacts devrait être synchronisé avec la liste des employés automatiquement. Quand j’ai besoin de joindre un collègue rapidement, je ne devrais pas avoir à tenter d’accéder à l’intranet corporatif, l’accès doit être transparent.

Tant qu’à y être, les rappels de la direction pour les feuilles de temps devraient être envoyés via une notification ou un texto dans mon téléphone. Finis les courriels qui ont une durée de vie de 15 secondes et qui encombre ma boîte de réception!

« Bring your own profile »

Une tablette lance une série d'idéesJe fais du service conseil et j’ai souvent à travailler avec les équipes internes. Or à chaque nouveau mandat, le client me crée une adresse de courriel, m’assigne un téléphone et une boîte vocale. Je n’en veux plus! J’ai déjà une adresse de courriel et un téléphone portable, cela devrait être transparent pour moi.

Il n’y a qu’à intégrer mes coordonnés dans le bottin d’entreprise. Encore une fois, l’idée est que mon téléphone portable est mon point de contact principal. Que ce soit par courriel, texto ou téléphone, tout devrait être centré sur un seul appareil.

Des données mobiles

Quand vous avez une présentation à faire, c’est l’enfer! Il faut emprunter un ordinateur portable et un projecteur, brancher le tout, incluant le fil réseau, en priant que personne ne va trébucher là-dedans pendant la réunion. Ensuite il faut se connecter sur un poste qui ne possède pas les mêmes applications que votre poste de travail, sinon il faut se connecter à une VM. Quel bordel!

Il est grand temps que les organisations mettent en place :

  • Des réseaux WiFi fiable qui donnent accès aux systèmes internes.
  • Quelque chose qui ressemble aux tableaux interactifs dans les écoles, avec des résolutions d’écran minimalement HD.

Moins de puissance, plus de vitesse

Metalogique me permet déjà d’accéder à l’intranet à distance et le WiFi est disponible au bureau. Quand j’ai à travailler au bureau, je travaille habituellement avec mon « vieux » iPad de 2012, accompagné du clavier Bluetooth d’un iMac. Je ne ferais pas de grands dossiers d’architecture avec cela mais je suis surpris de l’autonomie que j’ai réussi à avoir avec une si « modeste » machine.

Ça m’a fait réalisé que j’ai rarement besoin d’un processeur dernier cri, ni d’une tonne de RAM, sauf pour des besoins très spécifique. Le maillon faible présentement de la plupart des ordinateurs de bureau, c’est les disques durs rotatifs. En 2015, l’OS et les applications ne devraient plus jamais être sur des disques durs conventionnels. On perd plusieurs minutes de productivité par jour à attendre que ces applications ouvrent, ça devrait être instantané, un peu à l’image des tablettes.

En attendant

Cette vidéo de Corning fut très inspirante dans ma réflexion.


Ultimement, j’avoue que je serais bien heureux de travailler avec l’interface Jarvis de Tony Stark!

Partagez-moi votre vision d’un environnement de travail idéal, je suis curieux de vous lire.

Gens des TI, soulevez-vous! (Première partie)

L’automne dernier j’ai voulu donner une conférence à mes collègues où je traiterais de l’impact des nouvelles technologies dans nos vies, ainsi que les tendances des prochaines années. M’adressant à une clientèle de développeurs et d’architectes informatiques, je ne pouvais me contenter de leur parler du dernier iPhone ou de l’arrivée des montres connectées.

Je cherchais un angle différent pour leur faire prendre conscience des changements dans lesquels ils baignent au quotidien et les faire réfléchir sur l’avenir des technologies de l’information et des communications. J’ai finalement opté de traiter des changements dans nos vies, selon trois sphères d’activité :

  • l’impact sur la réalisation de nos tâches quotidiennes;
  • l’impact sur la mondialisation;
  • l’impact dans la création de contenu.

En faisant mes recherches, j’en suis venu à un constat plutôt accablant. Si les téléphones intelligents et les tablettes ont eu beaucoup d’impact dans la réalisation de nos tâches quotidiennes, il y a eu très peu de gain pour la création des contenus. Par création de contenu, je réfère à la production de la connaissance dans une organisation, du rapport en format Word ou PDF, de la présentation avec PowerPoint en passant par les contenus Web et les applications. Cela inclut l’essentiel des cols blancs, appuyés par les équipes TI qui leur fournissent les outils technologiques.

Bien sûr que nos ordinateurs sont plus performants, mais fondamentalement, rien n’a vraiment changé. Nous avons simplement eu plusieurs itérations des outils que nous avions déjà depuis près de 20 ans : ordinateur, clavier, souris, moniteur, imprimante, tout cela connecté par un réseau filaire. En comparaison, les téléphones intelligents n’ont plus rien à voir à avec les premières générations de téléphones cellulaires. En fait, c’est presque devenu archaïque d’utiliser son téléphone pour parler. C’est vous dire!

Portable-ideesC’est tellement vrai, que je suis tombé sur une vidéo qui fait démarrer en même temps un ordinateur d’il y a 20 ans (un 486 ou un Pentium), roulant sur Windows 95, et un portable récent roulant Windows 7. Croyez-le ou non, mais la séquence de démarrage prend exactement le même temps! Donc nous avons des ordinateurs plus puissants certes, mais pas nécessairement plus performant.

Je ne sais pas pour vous, mais moi je trouve qu’en tant que professionnel en TI, on s’est négligé et qu’il est temps que l’on modernise nos façons de travailler mais surtout nos outils de travail, qui sont complètement dépassés!

Gens des TI, soulevez-vous!

Dans mon prochain billet, je vous ferai part de quelques suggestions.

Ma présentation est disponible sur le site de Prezi.

 

Coder proprement pour sauver du temps!

Le méthodologie du clean code, lancé par Robert Martin, aussi connu sous le nom de Uncle Bob, a pour but est de faire sauver du temps à tout le monde qui devra travailler sur votre projet ainsi qu’à vous-même. Que ce soit pour l’entretien de votre projet, la compréhension de votre code ou tout simplement pour vous faire aimer de vos collègues. De plus, vous augmenterez le rendement de votre équipe et si d’autres gens prennent le relais suite à votre passage, vous deviendrez une source de référence.

Vous codez pour les autres

Lorsque je suivais mes cours de conduite, le professeur disait toujours de conduire pour les autres parce qu’on ne sait jamais comment ils vont réagir. Cette théorie est aussi vrai pour un programmeur. Vous ne devriez jamais programmer en étant la seule personne à comprendre votre code. Encore pire, si vous devez changer ce que vous avez fait plusieurs mois après parce que votre client veut quelque chose de nouveau, vous ne devriez pas avoir à le passer en revue au grand complet pour vous comprendre. Codez plutôt dans l’optique que vous écrivez un livre, et comme dans un livre vous ne devriez pas avoir besoin de remonter dans votre code pour voir à quoi servent vos variables. Afin de réussir ce coup fumant, il faudra le faire sans aucun commentaire et simplement avec l’aide de vos variables et de vos méthodes!

/* Pas de commentaire */

Vous ne devriez pas avoir besoin d’avoir recours aux commentaires et ce pour plusieurs raisons :

  • Attire l’attention sur autre chose que le code
  • Écrire des commentaires de qualités prend du temps
  • Si le code change, vous devez prendre le temps de modifier les commentaires
  • Il peuvent devenir désuet et semer la confusion s’ils sont mal maintenu

Voici deux exemples flagrant de commentaires inutiles qui nuisent à la lecture du code :

///summary
/// Méthode permettant de transformer le texte
///summary
/// <returns>Retourne le texte transformé</returns>
private string TransformerTexte(){
[…]
return monTexteTransforme;
}

private string TransformerTexte(){
[…]
//retourner mon texte transformé
return monTexteTransforme;
}

Dans le premier exemple, le nom de la méthode est suffisamment parlant pour ne pas avoir à expliquer son but et votre nom de variable est très claire également. Pour le deuxième, les commentaires viennent créer un doublons puisque vous dites exactement la même chose que la variable. Vous pouvez donc retirer commentaires sans nuire à la compréhension. N’oubliez pas que l’absence de commentaire est plus utile qu’un mauvais commentaire. Si toutefois vous sentez le besoin d’expliquer votre méthode ou vos variables, c’est probablement parce qu’elle est trop longue ou que les noms sont mal choisis.

C’est ici que vos noms de variables et les noms de vos classes CSS entrent en action!

Des noms de variables qui parlent!

Lorsqu’un autre programmeur lit votre code, vos noms de variables doivent lui indiquer ce que vous êtes en train de faire. Par exemple si vous déclarer un booléen, choisissez un autre nom que

bool estValable = false;

dites plutôt ce que vous vérifiez en nommant votre variable convenablement :

bool imageDeTailleCorrecte = false;

Vos noms de variables seront plus long la plupart du temps mais vous allez voir ce qui « est valable » au premier coup d’œil et vous n’aurez donc pas besoin d’une ligne de commentaire pour expliquer ce que vous validez.

N’oubliez pas de les déclarer juste avant de les utilisez pour facilité la lecture et de ne pas donner des noms stylisés du genre « int nombre = 1 ».

Vos noms de classes CSS vous servent de carte géographique

Tout comme vos variables, vos nom de classes doivent parler à la personne qui doit utilisez votre code et lui indiquer à quel endroit cette classe est utilisée.

Par exemple, la classe suivante pourrait facilement être renommée :

<div class="contenu">Vive le chocolat</div>

Au lieu de simplement dire que les styles de cette classe s’applique au contenu, dites plutôt à quelle endroit se trouve ce contenu.

<div class="contenu-page-accueil">Vive le chocolat</div>

De cette façon, si quelqu’un doit modifier ce que vous avez fait, il sera simple de savoir où cette classe est appliquée et vous sauverez du temps.

Autre point très important pour vos classes CSS, évitez de les faire avec des noms qui ressemblent à du « inline style » comme par exemple :

<div class="gras petit-padding titre-page-accueil">Vive le bacon</div>

.gras{
font-weight:bold;
}
.petit-padding{
padding:5px;
}

Dans cet exemple il serait beaucoup plus efficace de regrouper tout vos styles sur la classe « titre-page-accueil » pour ne pas créer de doublons dans votre CSS et grandement faciliter l’entretien de votre projet.

La longueur compte

Lors de l’élaboration d’une méthode, gardez celle-ci la plus courte possible. Une bonne façon de voir si elle est trop longue est si vous réalisez qu’elle est utilisée pour plusieurs choses à la fois.

Voici l’exemple d’une mauvaise méthode :

private void ObtenirItemListePrix (){
//Code pour obtenir les items de la liste nommée Prix
//Code qui ajoute des items dans la liste
}

La méthode sert à deux choses, ce qui invalide son nom. Optez plutôt pour deux méthodes, une qui obtient les items de la liste et une autre qui va ajouter les items.

Pour une méthode la plus claire et simple possible, privilégiez celles de type « void », avec le moins de paramètre possible et sans validation booléenne (faites en deux à la place). Bien entendu il s’agit d’un idéal, il est normal de ne pas toujours y parvenir.

Par la suite, si vous avez des problèmes, il sera beaucoup plus rapide de trouver quelle partie de votre code est en erreur, vos fonctions seront plus courtes donc plus faciles à entretenir, comprendre et lire en plus de décrire véritablement ce qu’elles font, ce qui vous permet de ne pas mettre de commentaire.

Coder proprement, une mentalité

Pendant votre développement vous devrez constamment vous remettre en question et parfois renommer vos variables ou méthodes plus votre code évoluera. Cependant si votre équipe maîtrise bien le concept, vous sauverez un temps considérable pour l’entretien de vos projets et aussi stopper la perte de cheveux devant du code incompréhensible.