Injection de dépendances et currying

Je travaille en ce moment sur un port d'essence en JavaScript, qui me sert de sandbox pour mieux comprendre la programmation fonctionnelle. Comme pour la librairie originale, je voulais conserver la possibilité de tout configurer par injection de dépendances.

La première idée qui m'est venue est d'utiliser des factory functions, de cette manière :

function fetchUserFactory(fetch) {
  return function fetchUser(id) {
    return fetch('http://example.com/api/users/' + id);
  };
}
Lire la suite

Des conventions utiles

Beaucoup de développeurs suivent des conventions de codage pour développer leurs applications. Elles sont bien sûr importantes, voire indispensables notamment pour un travail en équipe, mais elles ne sont finalement que des considérations esthétiques.

Tout le monde connait ces interminables débats sur comment nommer ses fichiers, ses objets, ses méthodes ou variables, et beaucoup d'entre nous aiment tailler le bout de gras histoire de bien prouver qu'ils ont raison, moi y compris... Pourtant, peu importe le style, rien de tout cela ne permet de certifier qu'un code sera intelligent et efficace.

Je vous propose donc quelques unes de mes guidelines.

Lire la suite

Gérer le legacy code

Il y a fort longtemps, vous avez codé une classe une peu pourrie (si, si, on l'a tous fait), qui était capable de dire quelque chose. La voici :

class VieilleClassePourrie {

	public function direQuelqueChose( ) {
		echo 'quelque chose';
	}
}

Mais voilà, vous aimeriez bien dire autre chose maintenant... Motivé, vous décidez d'écrire une nouvelle classe qui déchire tout, que vous pourrez utiliser dans vos nouveaux projets qui déchirent tout. La voilà :

class NouvelleClasseQuiTue {

	public function dire( $phrase ) {
		echo $phrase;
	}
}

Mille fois mieux pensée, cette classe permet de dire tout et n'importe quoi !

Et là, c'est le drame. Vous devez désormais maintenir deux versions de cette classe, pour vos anciens et vos nouveaux projets.

Lire la suite

Refactoring

Si vous perdez le contrôle sur votre outil de travail, vous perdez le contrôle sur la qualité de votre produit. Imaginez un marteau qui vous glisse des mains, vous risquez fort de rater le clou, ou pire, de vous écraser méchamment les doigts.

La programmation demande une rigueur extrême et une attention constante.

Une fois introduit un morceau de code un peu hasardeux, trop spécialisé ou mal pensé pour être maintenu correctement, les ennuis commencent. A un moment ou à un autre, vous aurez à modifier ce code, à y faire des corrections ou des ajouts de fonctionnalités, et si il n'est pas naturellement intégré au reste de votre application, vous allez devoir ruser pour l'utiliser comme vous l'entendez.

Alors quelles solutions à ce problème ?

Lire la suite

Indenter

C'est le moment de relancer l'éternel débat sur l'indentation ! Je ne vais pas vous rappeler combien il est important d'indenter correctement son code, je pense que vous le savez déjà.

Je voudrais plutôt aborder la question de comment indenter. Là, on se retrouve entre 2 camps : ceux qui utilisent des espaces, et ceux qui préfèrent les tabulations. Pour ne rien vous cacher, j'ai un énorme parti pris pour les tabulations, et je m'en va vous dire pourquoi...

Lire la suite