La meilleure façon de coder

Tout ce qui concerne la programmation.
Répondre
Avatar de l’utilisateur
Dunatotatos
Membre
Membre
Messages : 425
Inscription : 11 mai 2016, 20:56
Status : Hors-ligne

Salut à tous,

Une petite question de management de projet aujourd'hui. Je code beaucoup ces derniers temps, dans quelques langages différents, sur des projets de différents types, seul ou en équipe. Mais j'ai l'impression de mal coder, ou du moins pas efficacement.

Mon problème n'est pas au niveau de la qualité (il y a encore du travail pour je code comme une rock-star, mais je sais comment améliorer ça), mais du temps passé pour écrire une pauvre petite fonctionnalité. Alors que certains écrivent un fichier complet de code, compilent, testent, et publient parce-que tout fonctionne comme voulu, j'en suis plutôt au stade d'écrire un petit bout de code, de tester, de corriger les erreurs de syntaxe, puis de me rendre compte que ça ne fonctionne absolument pas comme prévu. J'en suis au point d'écrire des tests unitaires pour 2 lignes de code !

Je cherche donc des techniques de "micro-management personnel" pour écrire du premier coup du code de qualité. Les diagrammes UML et les méthodes de management de projet à l'échelle d'une équipe ne m'intéressent pas dans ce cas. J'en utilise déjà pour certains projets en équipe, ou pour de gros projets persos, mais ai toujours ce problème de manque d'efficacité.

Comment faites-vous pour coder efficacement ?
Avatar de l’utilisateur
Mimoza
Contributeur
Contributeur
Messages : 655
Inscription : 22 avr. 2016, 12:00
Localisation : Terre
Status : Hors-ligne

Il n'y a pas 36 manières … coder, coder, coder. C'est avec la pratique et l'expérience que l'efficacité viens. Ensuite le langage permet d'aller plus ou moins vite et l'utilisation de framework de se passer de réinventer la roue.
Il y a pas mal de bouquin (souvent en anglais) qui te donne les bonne pratique de codage, cependant il y en a 1 qui a été traduit en français et qui te donne de bonnes indications avec des exemples pour coder correctement, c'est «Coder Proprement». En cherchant bien tu peux le trouver sur le net.
Avatar de l’utilisateur
Dunatotatos
Membre
Membre
Messages : 425
Inscription : 11 mai 2016, 20:56
Status : Hors-ligne

Merci pour la recommandation ! J'ai fait acquisition de ce livre, et, pour le moment, il me plaît bien. À voir si j'améliore mes compétences dans le domaine.

J'ai aussi récemment tenté l'utilisation d'un IDE (au lieu du bon vieux couple Vim/compilo), et j'ai l'impression que c'est assez utile pour corriger les fautes de frappe (essentiellement erreurs de syntaxe et mauvais non de variables). L'idéal serait un plugin pour corriger ces fautes de frappe. Je suis sûr que ça existe, mais n'ai pas encore cherché.
Avatar de l’utilisateur
Mimoza
Contributeur
Contributeur
Messages : 655
Inscription : 22 avr. 2016, 12:00
Localisation : Terre
Status : Hors-ligne

La première moitié du bouquin est assez classique dans ses recommandations, c'est la deuxième partie qui donne tout son intérêt au bouquin en mettant en pratique la première partie avec le code de JUnit comme exemple.

Si la lecture en anglais ne te fait pas peur il y a Pragmatic Programmer qui a une bonne réputation ou le plus ancien Code Complete. Sinon on m'a parlé récemment de Programming Pearls.

Pour l'IDE lequel a tu pris ? Essaye IntelliJ qui est vraiment un cran au dessus de Eclipse a mon avis. La version Comunity (gratuite) est suffisante pour tout faire, la version Ultimate (payante) apporte une meilleurs intégrations de divers framwork et quelques outils supplémentaire (client SQL, …). Ils ont décliné cet environnement pour pas mal de langage, donc a toi de choisir.
Avatar de l’utilisateur
kitmale
Membre actif
Membre actif
Messages : 733
Inscription : 25 avr. 2016, 09:39
Status : Hors-ligne

Dunatotatos a écrit :Merci pour la recommandation ! J'ai fait acquisition de ce livre, et, pour le moment, il me plaît bien. À voir si j'améliore mes compétences dans le domaine.

J'ai aussi récemment tenté l'utilisation d'un IDE (au lieu du bon vieux couple Vim/compilo), et j'ai l'impression que c'est assez utile pour corriger les fautes de frappe (essentiellement erreurs de syntaxe et mauvais non de variables). L'idéal serait un plugin pour corriger ces fautes de frappe. Je suis sûr que ça existe, mais n'ai pas encore cherché.
Je l'ai, "Clean Code", et en effet il est très pédagogique. A croire que seuls les anglo-saxons savent écrire des livres didactiques.
http://player.lg1043.com/CHLGFM

"Do not fear to be eccentric in opinion, for every opinion now accepted was once eccentric. Bertrand Russell
Avatar de l’utilisateur
Mimoza
Contributeur
Contributeur
Messages : 655
Inscription : 22 avr. 2016, 12:00
Localisation : Terre
Status : Hors-ligne

Avec ta question j'ai refait une petit recherche pour étoffer ma biblio et il y en a 2 qui ont l'air d'être des classiques :
  1. Design patterns. Catalogue des modèles de conception réutilisables,du «gang of four», ancien (1994), mais reconnu comme la référence.
  2. Tête la première - Designs Patterns, rédigé pour remettre a jour les notion (vieillissante) du précédent livre. La première édition date de 2004 et il y a eu une mise à jour en 2010.
Le ton est décalé et humoristique, tu trouve facilement des extrait sur le net pour te donné une idée.

Autant le premier se trouve encore, même sa traduction en Français, autant le second est bien plus délicat à trouver à un prix raisonnable (je l'ai trouvé a plusieurs centaines d'€ :icon_e_surprised: ) quand il n'est pas en rupture … heureusement que le net a une bonne mémoire et que l'on peut le trouver «par harsard» :110:
Avatar de l’utilisateur
piratebab
Site Admin
Site Admin
Messages : 4946
Inscription : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : Hors-ligne

Je te donnerai un simple conseil que j'essaie d'appliquer au quotidien, et pas que pour le codage.
avant de te lancer, prends un papier, un crayon, et défini clairement ton besoin.
Le simple fait d'écrire clairement le besoin optimise énormément la définition de la solution.
On a trop souvent la tendance à partir bille en tete sur une solution, qui ne répond pas forcément au besoin.

Évidement, ça n’empêche pas de faire des fautes de frappe!
Avatar de l’utilisateur
Mimoza
Contributeur
Contributeur
Messages : 655
Inscription : 22 avr. 2016, 12:00
Localisation : Terre
Status : Hors-ligne

En effet le papier crayon est un bon début, mais si possible parler avec un pair aide encore plus avec ses remarques. Hésite pas non plus a aller a des club en soirée comme les JUG/MUG/xUG … l'échange et le partage d'expérience est un très bon moyen de s'améliorer.
Avatar de l’utilisateur
kitmale
Membre actif
Membre actif
Messages : 733
Inscription : 25 avr. 2016, 09:39
Status : Hors-ligne

"Hésite pas non plus a aller a des club en soirée comme les JUG/MUG/xUG … l'échange et le partage d'expérience un très bon moyen de s'améliorer.
Meme si l'on est un newbie comme moi?
http://player.lg1043.com/CHLGFM

"Do not fear to be eccentric in opinion, for every opinion now accepted was once eccentric. Bertrand Russell
Avatar de l’utilisateur
vohu
Membre
Membre
Messages : 455
Inscription : 16 avr. 2016, 12:02
Localisation : Strasbourg
Status : Hors-ligne

C'est pas le fait que tu sois un newbie qui va les déranger...
Avatar de l’utilisateur
Mimoza
Contributeur
Contributeur
Messages : 655
Inscription : 22 avr. 2016, 12:00
Localisation : Terre
Status : Hors-ligne

C'est sur qu'en tant que newbie tu ne vas pas tout comprendre mais c'est le meilleur moyen de progresser rapidement au près de gens compétent.
Avatar de l’utilisateur
Dunatotatos
Membre
Membre
Messages : 425
Inscription : 11 mai 2016, 20:56
Status : Hors-ligne

Je n'ai pas vraiment donné de nouvelles par ici pendant quelques temps. Désolé, surcharge de travail & vacances...
J'ai effectivement essayé IntelliJ (en particulier quand j'ai fait un peu d'Android, l'IDE recommandé par Google est basé là-dessus). Il m'a bien aidé, mais il a le désavantage de ne pas être disponible partout facilement (installation obligatoire).
Cet IDE m'a surtout permis de remarquer que la tâche la plus consommatrice de temps lorsque je code est de débugguer les erreurs de syntaxe. Alors j'ai trouvé ceci : https://github.com/amix/vimrc un ensemble de plugins et de fichiers de config pour vim qui permettent de vérifier la syntaxe lors de l'enregistrement du fichier, de replier du code selon l'indentation, et tout un tas de choses que je ne maîtrise pas encore. Vim devient un véritable IDE.

Et je gagne effectivement un temps monstrueux !
L'étape suivante est l'écriture des tests unitaires avant l'écriture du code. J'ai déjà commencé pour les projets que je démarre maintenant, mais j'hésite à ré-écrire mes projets précédents les plus importants (qui sont en production et n'ont pas de tests unitaires, et ne permettent même pas d'en avoir -_-)

J'envie toujours les codeurs qui font en une heure ce que je fais en 2 jours, mais j'imagine que l'expérience est nécessaire (et pas suffisante).
Avatar de l’utilisateur
piratebab
Site Admin
Site Admin
Messages : 4946
Inscription : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : Hors-ligne

Le volume n'est pas toujours synonyme de qualité!
Regarde les méthode de coge"driven by test".
Tu commences par écrire les tests (ce qui correspond en fait à ce que doit réalisé ton code tel que décrit dans le cahier des charges), et il ne te reste plus ensuite qu'a faire un code qui passe les tests :)
Avatar de l’utilisateur
Dunatotatos
Membre
Membre
Messages : 425
Inscription : 11 mai 2016, 20:56
Status : Hors-ligne

Pour les intéressés, j'ai grandement amélioré la qualité de mon code avec syntastic (un plugin pour Vim). En particulier, j'écris beaucoup de Python, et deux outils incroyables m'ont fait réaliser à quel point j'étais mauvais: pyflakes et pylint. Ils sont en plus faciles à intégrer dans syntastic, mais pylint est un peu lent et rend Vim lent sur de gros fichiers plein d'avertissements. (Typiquement, il vaut mieux le désactiver sur les fichiers contenant les tests unitaires.)

Pylint obligeant à coder en PEP8 (voire un peu plus strict), pas mal de recruteurs sont en plus intéressés par une telle habitude d'utilisation.
Avatar de l’utilisateur
Mimoza
Contributeur
Contributeur
Messages : 655
Inscription : 22 avr. 2016, 12:00
Localisation : Terre
Status : Hors-ligne

En effet sur les «gros» IDE (IntelliJ, Eclipse, …) ces outils sont intégré de bases et nous remettent dans le droit chemin assez régulièrement. Après il ne faut pas se dire que l'on code mal, mais juste d'une manière non optimal/recommandé. Ces outils permettent de ne pas être trop perdu quand on tombe sur le code d'un autre, il pousse à une homogénéisation du style d'écriture.
Avatar de l’utilisateur
vohu
Membre
Membre
Messages : 455
Inscription : 16 avr. 2016, 12:02
Localisation : Strasbourg
Status : Hors-ligne

Dunatotatos a écrit : 11 avr. 2017, 10:10 Pour les intéressés, j'ai grandement amélioré la qualité de mon code avec syntastic (un plugin pour Vim). En particulier, j'écris beaucoup de Python, et deux outils incroyables m'ont fait réaliser à quel point j'étais mauvais: pyflakes et pylint. Ils sont en plus faciles à intégrer dans syntastic, mais pylint est un peu lent et rend Vim lent sur de gros fichiers plein d'avertissements. (Typiquement, il vaut mieux le désactiver sur les fichiers contenant les tests unitaires.)

Pylint obligeant à coder en PEP8 (voire un peu plus strict), pas mal de recruteurs sont en plus intéressés par une telle habitude d'utilisation.
J'ai dernièrement essayé visual studio code. Il est vraiment sympa pour ça aussi.
Avatar de l’utilisateur
Mimoza
Contributeur
Contributeur
Messages : 655
Inscription : 22 avr. 2016, 12:00
Localisation : Terre
Status : Hors-ligne

Il fonctionne sous nux ?
C'est vrai qu'avec la suite office c'est un bon produit de crosoft.
Avatar de l’utilisateur
vohu
Membre
Membre
Messages : 455
Inscription : 16 avr. 2016, 12:02
Localisation : Strasbourg
Status : Hors-ligne

oui, MS fait de grosses avancées vers l'open source. Ils sont même en train de porter le de .net en open source (.net core).
Pour visual studio code : https://code.visualstudio.com/

Et ils ont aussi fait un port de SQLServer pour linux (mais toujours sous licence proprio cette fois)
Avatar de l’utilisateur
piratebab
Site Admin
Site Admin
Messages : 4946
Inscription : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : Hors-ligne

Et moi qui en suis encore a kwrite et notepad+ !
Voire nano ..
Bon OK, je ne code pas tous les jours, et si ça dépasse 20 lignes, ça reste inachevé la plupart du temps ...
Avatar de l’utilisateur
vohu
Membre
Membre
Messages : 455
Inscription : 16 avr. 2016, 12:02
Localisation : Strasbourg
Status : Hors-ligne

Après je pense que rien ne vaut un vim ou un emacs (sans faire le débat). mais, ils ont une prise en main pas évidente.

Nano est bien pratique pour changer un fichier conf ou taper quelques lignes. (on peut d'ailleurs le paramétrer pour la coloration syntaxique, la taille des indentations, la numérotation des lignes, et sans doute bien plus.

Très souvent j'utilise geany si je veux quelque chose d'un peu plus élaboré en graphique

Ensuite, les visual studio, eclipse, netbeans, intellij, pycharm consomment énormément de mémoire et de processeur pour fonctionner. Ca devient intéressant lorsqu'on travaille avec beaucoup de librairies ou des frameworks car l'autocompletion permet d'éviter bien souvent de consulter la doc, de corriger la syntaxe et beaucoup d'erreurs avant d'executer le programme.
Répondre