Comment résoudre un problème de programmation

Bonjour à tous,

A travers ce billet, je vais essayer de vous présenter mes méthodes pour aborder un problème de programmation. Etant développeur à plein temps, je suis confronté en permanence à ce type de problématique. En général, lorsqu’on programme, on va toujours vite et on ne fait pas toujours attention au détail… et c’est souvent la cause de l’erreur.

Un premier conseil peut être de prendre le temps de programmer correctement, et d’avoir le soucis du détail, l’indentation par exemple, l’utilisation d’accolades… un code correctement écrit cause toujours moins d’erreurs.

Par exemple, entre ceci :

if ($myVariable == true) {
   echo "test";
}

et cela :

if ($myVariable == true)
   echo "test";

Le premier est clair, le deuxième peut prêter à confusion, surtout si vous reprenez le code quelques mois plus tard. Il ne faut jamais négliger la syntaxe.

Ensuite un problème de programmation va se présenter en général sous ces différentes formes :

  • Une page blanche
  • Une erreur explicite
  • Une erreur de syntaxe
  • Une librairie manquante

Voyons ces problèmes dans l’ordre et essayons de trouver un moyen de les éviter :

Une page blanche :

De mon expérience, quand plus rien ne marche le problème n’est pas forcement le plus grave. Dans une application web, il y a toujours deux parties : le serveur et le client. Lorsqu’une page blanche apparait il faut que vous commenciez par faire les vérifications suivantes :

  • Vérifier que le serveur web est démarré
  • Vérifier que le virtual host  est correctement configuré. Pour cela, vous pouvez vous rendre dans le dossier racine de votre virtual host et vérifier que vous passez bien dedans en mettant un die(‘test’) au tout début du fichier index.php par exemple.
  •  Ensuite, il faut aller voir les logs de votre serveur. Si jamais une erreur est survenue, une trace existera dans ce fichier. Sous debian, il sera situé dans /var/log/apache2/error.log , une commande est utile pour voir les 100 dernières lignes par exemple :
    tail -n 100 /var/log/apache2/error.log
  • Quand vous travaillez en mode développement, il est essentiel de configurer correctement votre environnement pour afficher toutes les erreurs, vous pouvez trouver des pistes ici.
  • Si rien n’y fait, l’erreur peut venir de votre cache de framework, pensez à tout bien vider
  • Il peut y avoir un problème de configuration, comme des mauvais accès à la base de donnée par exemple. Relisez tout
  • En dernier recours, vérifier les majuscules/minuscules, la plupart du temps, lorsqu’on travaille sur son ordinateur, celui-ci ne fait pas la différence mais ce n’est pas le ças des serveurs web qui sont case sensitive.
  • Priez !
Une erreur de syntaxe :
Pour les erreurs de syntaxe, les sources peuvent être multiples. Le meilleur moyen pour les éviter, est une fois de plus la qualité de l’indentation de votre code, à chaque bloc, utilisez une fabulation pour bien le distinguer du reste.
La seconde arme pour ce problème est d’utiliser un IDE très expressif qui va vous montrer les erreurs et vous en avertir. Dans 90% des cas, ce type d’erreurs vient d’accolades mal placées qui ont été oublié d’être fermé.
Pour l’utilisation d’IDE, je conseille l’utilisation de ceux développés par JetBrains , il en existe pour tous les langages, et ils sont tous d’une qualité exceptionnelle. Bien plus légers que Eclipse, ils ont une très bonne complétion et offre une recherche texte efficace. Ils vous avertiront aussi des erreurs que vous pouvez avoir faite. Pour ma part, j’ai testé ceux-la :
  • PhpStorm
  • RubyMine
  • WebStorm
  • PyCharm
Mon code marche en local mais pas en production : 
On est régulièrement confronté à ce problème, on fait quelque chose qui marche sur notre machine, mais lorsqu’on met en production, cela ne marche pas, d’où peut venir ce problème ? Plusieurs possibilités :
  • Le case sensitive : Faîtes attention à vos majuscules/minuscules, dans 90% du cas, cela marchera en local mais pas sur un système linux comme celui que vous aurez en production
  • Un problème de versionning : Git et SVN sont des outils géniaux mais ils sont aussi sources de problème lors d’un déploiement en production, prenez bien le temps de vérifier le ficher sur le serveur en utilisant un petit “vi monFichier.rb” et soyez sur que vos modifications apparaissent.
  • Le Cache : Assurez vous d’avoir supprimer tout le cache de votre navigateur + serveur + framework. Dans la plupart des cas, un reboot d’apache
  • Les données de base de donnée : Souvent, certaines configurations sont stockées en base de donnée. Elles peuvent être changés en local mais vous avez oublié de les changer en production. La meilleure solution pour contrer ça, c’est de se faire des script SQL de migration pour chaque nouvelle version.
  • Virtual Host : Une erreur d’inattention s’est peut être glissée dans la configuration de votre virtual host et  celui-ci pointe vers le mauvais dossier.

Une librairie manquante :

Assez souvent, il manque des librairies qui sont indispensable pour l’utilisation du CMS, du framework… Le mieux pour ce type de problème, c’est une recherche google, la plupart du temps les autres internautes ont déjà rencontrés ce problème et ils ont fait un post de blog ou bien une réponse sur stackoverflow. Pour MACOSX, vous pouvez utiliser le gestionnaire de paquet homebrew, qui est facile d’installation et qui permet de rajouter des librairies qui compilent sous MACOSX

Pour conclure, il ne faut pas hésiter à demander de l’aide et à farfouiller sur le web. Essayez de rester méthodique et de vous trouver un protocole de débug qui vous convient. La configuration de votre environnement de programmation pour faire du pas à pas est aussi un gros atout pour gagner en efficacité.