Coder proprement

2035041015-0

Je ne serais ni le premier, ni le dernier à vous parler de code propre, vous en conviendrez. Si je suis venu parler de ceci c’est parce que je suis en train de lire l’intéressant livre de Robert C Martin : « Coder proprement ». J’adhère sur certains propos que j’ai pu lire dans ce livre et j’avais envie de partager sur la toile mon avis à ce propos. *trop excité*

original

Qu’est-ce un code propre ?

Un code propre est :

  • un code lisible
  • un code simple
  • un code bien pensé/réfléchi
  • un code minimal si possible
  • un code améliorable par n’importe qui

Le fond c’est bien, mais la forme ça aide.

Un code indenté est toujours plus beau qu’un code non indenté ou mal indenté. J’en veux pour preuve la norme de l’école française réputée : l’Epitech. J’ai un copain qui y est et qui m’avait raconté que dès la première année, il vous impose une norme d’écriture. Si vous cherchez un peu sur Google, vous trouverez des bribes concernant cette norme. Elle apprend aux élèves à écrire du bon code (Il y a un autre raison à cette norme, mais là n’est pas le sujet).

Quand vous codez, faîtes comme si quelqu’un irait lire votre code après et que vous ne serez pas à ses côtés. En entreprise ce sera très certainement le cas. Le code sera maintenu par quelqu’un d’autre que vous.

Vous êtes une sorte d’écrivain, vous écrivez un roman, pour vous mais surtout pour les autres.

Un code propre c’est un bon code.

Je ne suis pas un programmeur expert, mais ma faible expérience me permet déjà d’adhérer à ces propos ! Combien de fois j’ai pu voir un code illisible bien qu’efficace ? Pour compléter la définition de code propre, je devrais rajouter qu’on devrait mettre un maximum de commentaires, pas forcément de faire un pavé digne de Guerre et Paix, mais une phrase explicite. L’anglais est effectivement le langage de rigueur. Je m’explique :

A titre d’expérience, j’ai travaillé sur un projet scolaire de logiciel de dessin vectoriel simplifié avec deux collègues. Le projet est visible sur un compte github. Durant le projet, j’ai pu jauger le niveau de mes deux collègues. L’un était très très fort, l’autre aussi bon que moi. Celui qui était très fort on va l’appeler Jacques, et celui qui l’était moins Michel. On a bossé en équipe et on s’est ramassé un 20/20. 😀

auiomd

Bon, d’accord j’avoue j’ai choisi mes mots pour placer cette vanne 😀

Jacques était très fort donc assez rapide à nous fournir du code. Son premier jet fut quasi illisible sauf pour lui. Mais pas seulement son premier jet en fait : peu à peu on avançait dans le projet, ses variables restaient parfois un mystère. Avec un peu de bon sens, j’arrivais à comprendre (mais pas tout) son code. Ce qui n’était, hélas, pas le cas de Michel !

49446854

Peut être bien que Jacques trouvait compréhensible d’écrire private Coord mse = new Coord(0,0); les coordonnées de la souris (mse > mouse), mais ce n’est pas forcément le cas pour nous autres !

Bon attention quand même à ne pas non plus à faire trop long comme nom de variable ! private Coord coordinatesOfTheMousePointerWeUseOnCanvas = new Coord(0,0); C’est un poil trop verbal. Préférez par exemple : private Coord coordMouse = new Coord(0,0);

Chacun à sa façon d’écrire, bien entendu. Mais il n’en reste pas moins qu’il vous incombe la responsabilité d’être compréhensible.

Toujours sur ce même projet, j’ai pris l’habitude de toujours commenter mon code. Je n’en suis pas peu fier ! 😀 Ce qui n’était pas le cas de mes collègues !

49447312

Franchement, c’est très probablement la deuxième raison pour laquelle Michel était perdu. (Du coup, comme on devait rendre un projet commenté, on a passé nos deux nuits blanches pour tout commenter…Merci les copains! Les joies du code).

En résumé, si vous revenez dans 3 mois sur votre code, et que cela vous semble pas très compréhensible du premier coup d’œil, peut-être que vous avez mal écrit vos variables, ou que les commentaires sont pas très utiles à la compréhension. D’un coup c’est moins parlant. D’où : un code propre, c’est un bon code.

Scout toujours, scout un jour !

Le-film-Quand-Gerard-Jugnot-joue-au-chef-scout-sur-W9-a-20h50_portrait_w674

Un truc qui m’a « marqué » dans ce livre c’est ce proverbe de scout : « Laissez le campement plus propre que vous ne l’avez trouvé en arrivant »
Rien à dire, tout y est dit :mrgreen:

Nan sérieusement, j’ai eu à un moment reprendre du code, quand j’ai vu le truc ça voilà ma réaction :

49447308

Le boulot est donc comme le dit la citation très illustrative, rendez ça propre. Et normalement, celui qui est passé avant vous devrait vous filer du code un peu près propre, et celui qui passera après vous aura un code encore plus propre. On partage notre code en communauté. C’est quasi communiste comme mode de pensée ahah…

Head in HandsNulle la blague.

 

Allez, conclusion hâtive (vachement même)

Je n’ai pas fini de lire le livre, certaines choses me dépassent encore, mais il est clair que c’est un ouvrage très intéressant à avoir dans sa bibliothèque ! 🙂

Je vous ai exposé les principales lignes, les plus importantes quoi, pour vous mettre l’eau à la bouche *splash*

BONUS (parce que je savais où le caser)

Code Simple de Beck (vu dans le livre) :

Par ordre de priorité, un code simple :

  • passe tous les tests ;
  • n’est pas redondant
  • exprime toutes les idées de conception présentes dans le système
  • minimise le nombre d’entités, comme les classes, les méthodes, les fonctions et assimilées

Codeacademy, ou l’alternative à codeschool

Il n’y a pas très longtemps ma collègue décrivait son amour pour codeschool (c<>deschool). Mais à son plus grand désarroi, très peu de cours y sont gratuits, et les cours restent très chers !! Pour rappel, le concept de codeschool est d’apprendre à programmer en suivant intensivement les cours dispensés sur le site. Sont alors à votre disposition un émulateur d’éditeur de code et des vidéos. Vous apprenez donc pas à pas en tapant du code sur l’ « émulateur » et en regardant les vidéos. Après quelques recherches, j’ai pu constater que ce n’est pas la seule solution viable. Eh oui mes chers amis, il existe d’autres solutions et j’aimerai vous parler d’une d’entre elles qui me plaît beaucoup  car gratuite et simple. 🙂

Il faut cependant noter que contrairement à codeschool, code academy (ou codecacademy, ou codeacademy selon les envies des uns et des autres) ne propose aucun cours vidéos mais uniquement l’interaction avec un « émulateur » d’éditeur de texte. D’ailleurs, le site propose aux gens sur sa page principale de tester cet « émulateur ». 🙂 Ainsi vous serez à quoi vous attendre ! 🙂

codecademy-courses

Les cours dispensés sont les suivants :

  • Python
  • Ruby
  • JavaScript
  • HTML/CSS

Cela peut paraître peu voire dérisoire comparé à la liste de cours proposés par codeschool, mais tout d’abord il faut bien se mettre en tête que rien que ces cours là vous en avez pour un moment, d’autre part ils sont gratuits (ce n’est pas rien de le dire) et pour finir, l’équipe code academy travaille actuellement d’autres cours, ne vous leurrez pas, ils ne s’arrêteront pas en si bon chemin.En théorie, 12 semaines sont nécessaires pour apprendre un langage sur ce site, je dis bien en théorie. Il est certain que pour s’abandonner à ce genre de sites, il faut avoir du temps pour soi, mais cela vaut le coup, et je vous conseille Code Year. Ce dernier est un programme intensif (entendre par là : planning) conçu par code academy : Vous vous engagez à aller sur le site une fois par semaine (par exemple) et faire les exercices proposés.

badges

Code academy fonctionne sur un principe qui devient commun à tous ces sites de e-learning, principe même très fortement sponsorisé par Mozilla : les badges !
Quand on fait une avancée dans notre apprentissage nous gagnons un badge. 🙂 Il faut savoir que Mozilla œuvre pour la conception de badges universels qui seraient reconnu sur le web mais aussi en entreprise et sur le CV [1].  Moi je ne suis pas contre leur principe, tantôt il faudrait préciser que la valeur attribuée au badge sera moindre vis à vis d’un diplôme !

Dernière petite chose avant de vous laisser, les éditeurs utilisés par et sur code academy sont disponibles à cette adresse : http://labs.codecademy.com/#.

Prochainement, nous verrons un autre site de e-learning, je vous laisse dans l’ignorance le temps de fomenter un bel article ! 😀

P.S : J’ai volontairement mis le mot émulateur entre guillemets car ce ne sont pas des émulateurs, cependant, ce ne sont pas non plus de vrais éditeurs, tel qu’un éditeur de code installé sur votre PC/Macintosh/je-ne-sais-trop-quoi. 🙂

VOUS AVEZ ADORÉ ? VOUS ALLEZ RIRE MAIS CET ARTICLE VOUS INTÉRESSERA.

Code School , Cool ?

Bonjour jeunes (et moins jeunes) Gens !

En cette merveilleuse journée (nuit pour ma part) je vous propose de folâtrer du côté de code school et de ses cours , ma foi très bien réalisés .. Certes la plupart d’entre eux sont hélas payant, mais ça vaut, selon moi, le détour ! De plus, mes amis, réjouissons nous puisque certains de ses articles sont accessibles gratuitement 🙂 Pour ma part je n’ai jusqu’à maintenant testé uniquement Try Ruby mais celui-ci m’a plutôt convaincue de concert.

try-ruby-e5c4e60c3b82ce8d76f36cdbebd199f9

Essaie moi !

Ce qui m’a séduite ? ( Et Dieu sait que je ne suis pas facile à séduire … Il parait) Tout d’abord le design de la page , simple , soigné mais ludique. On n’a pas envie , comme sur certains sites du même acabit , de s’enfuir sous l’apparente complexité de la page, du vocabulaire, qui semble destiné uniquement à une élite intellectuelle … Ou en tout cas à plus intelligent que moi. Second point positif pour Try Ruby : son humour et sa lecture plaisante. Et clair ! Personnellement, je souriais comme une idiote devant mon Mac, heureuse d’un peu de douceur dans ce monde brut. Aaaah , comme un marshmallow qui fondrait dans la bouche … Je m’égare non ? Revenons en à nos moutons (ou bien présentement à nos Sheep) puisque nous arrivons au point noir de ce cours … Il est en anglais ! Enfin personne ne peut être parfait parait-il …

Concluons par l’efficacité : comme promis , en 15mn (ou un peu plus , je l’avoue) vous aurez appris les rudiments du Ruby. Comme je l’ai entendu quelque part : Efficace et pas cher. 

On m’a aussi conseillé Rails For Zombies …

Voilà !