Vous remarquerez que j'ai traduit "shorter" par "maigre", avis aux linguistes de proposer mieux, mais j'avoue que j'aime bien cette idée d'un code maigre en caractères et en lignes.

Écrire du code maigre et concis est vital quand vous commencez à travailler avec d'autres développeurs ou prenez plusieurs mois sur un projet. La clarté d'une ligne de code est largement supérieur à trois lignes de code qui font exactement la même chose. Voici cinq conseils pour l'écriture de code plus concis en utilisant diverses méthodes de raccourcis et techniques de programmation.

1) Mieux utiliser les opérations booléennes

Code Long

if($condition_quelconque == true)
{
	if($condition_secondaire == true)
	{
		print "Toutes les conditions sont remplies!";
	}
	else if($condition_alternative == true)
	{
		print "Toutes les conditions sont remplies!";
	}
}

Code Maigre

if($condition_quelconque && ($condition_secondaire || $condition_alternative)) 
{
	print "Toutes les conditions sont remplies!";
}

En faisant une meilleur utilisation des opérations Booléennes, vous pouvez combiner plusieurs instructions if dans une seule.

2) Utiliser l'opérateur Ternaire

Code Long

if($age >= 18)
	$peut_conduire = true;
else
	$peut_conduire = false;

Code Maigre
opérateur ternaire (les parenthèses ne sont pas toujours nécessaires, ici elles facilitent la compréhension)

$peut_conduire = ($age >= 18) ? true : false;

ou encore plus maigre, possible seulement si le résultat attendu est booléen

$peut_conduire = $age >= 18;

Les trois exemples donnent exactement le même résultat, l'utilisateur ne peut conduire que s'il a plus de 18 ans.

Je vous ajoute en bonus un autre exemple de code ternaire pour bien comprendre sont fonctionnement :

$action = (defined($_POST['action']) && !empty($_POST['action'])) ? $_POST['action'] : 'valeur par défaut';

Ce code est d'ailleurs bien pratique pour tester les réponses d'un formulaire et lui attribuer une valeur par défaut en une seule ligne de code maigre, simple et lisible.

3) Remplacer les boucles while par les boucles for

Code Long

$i = 0;
while($i < 100)
{
	print "Écris-moi 100 fois!";
 
	$i++;
}

Code Maigre

for($i = 0; $i < 100; $i++)
{
	print "Écris-moi 100 fois!";
}

4) Écrire de façon récursive

Il y a beaucoup de personnes qui se plaignent sur l'utilisation de la récursivité, et son infériorité (en terme de performance) à l'écriture de façon itérative. Toutefois, nul ne peut nier qu'elle permet d'écrire du code plus concis (la plupart du temps).

Code Long

function iterFib($n)
{
	$f1 = 1;
	$f2 = 0;
	$total = 0;
	if( $n == 0 || $n == 1)
		return $n;
 
	for($i = 2; $i <= $n; $i++)
	{
		$fib = $f1 + $f2;
		$f2 = $f1;
		$f1 = $fib;
	}
 
	return $fib;
}

Code Maigre

function fibonacci($n)
{
    	if ($n <= 2) return 1;
  	else return fibonacci($n-1) + fibonacci($n-2);
}

L'auteur dit avoir fait quelques test sur le code ci-dessus, et la différence de temps qu'il a fallu pour exécuter le code itératif contre le code récursif varie de quelques microsecondes. Je ne sais pas dans quelles mesures et conditions il a fait les tests, mais comme il a dit lui même la différence semble insignifiante.

Pour ma part j'ai fait des tests, et je n'arrive pas aux même conclusions que lui. Dans le cas de la suite de Fibonacci, la méthode récursive est extra lente dès qu'il s'agit de calculer un trop grand chiffre de la suite, il lui faut déjà plus d'une seconde pour calculer le 30ème. Alors que la méthode itérative met 0.2 secondes pour calculer les 1000 premiers chiffres de la suite... hallucinant le rapport....

Si on ne se concentre que sur les calculs des chiffres 3, 4 et 5 de la suite (résultats 2, 3 et 5), donc on limite le nombre d'appels récursifs, et qu'on fait les calculs 10000 fois dans une boucle for, alors le temps est équivalent... mais c'est ridicule car le nombre d'appel récursifs est limité... pour moi l'exemple n'est pas concluant...

5) Combinaison d'opérateurs arithmétiques et d'assignation

L'un des raccourcis les plus utilisé en développement, les opérateurs combinés.

Code Long

$variable = $variable + 1000;

Code Maigre

$variable += 1000;

Il y a de nombreux opérateurs combinés, vous trouverez ci-dessous les plus importants

+= // Ajoute et assigne à une variabe
-= // Soustrait...
/= // Divise...
*= // Multiplie....
%= // Modulo...
.= // Concatène...
 
// Pas des opérateurs combinés, mais néanmoins très utiles
++ // incrémente 1 à une variable
-- // décrémente 1 à une variable

Maintenant vous n'avez plus d'excuse pour coder maigrement de façon concise et efficace!!!