Quels sont vos astuces et secrets de programmation favoris
Pour gagner du temps ou impressionner les collègues ?


Vous faites du développement depuis des années dans votre langage favori et vous croyez qu'il a fini de vous surprendre ?

Pas si sûr, car tous les langages ont des secrets, des fonctionnalités cachées que vous rencontrez un beau jour sur le code d'un collègue, sur un projet open-source ou même par une malheureuse (ou heureuse?) faute de frappe.

En PHP par exemple, savez-vous qu'il est possible d'appeler « Echo » avec plusieurs paramètres et faire, en quelque sorte de la concaténation avec une virgule ?

Si cette astuce est anecdotique, voir inutile, d'autres peuvent surprendre et s'avérer très utiles, comme ce bout de code, certes un peu extrême pour des raisons de démonstration :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php

  $Bar = "a";
  $Foo = "Bar";
  $World = "Foo";
  $Hello = "World";
  $a = "Hello";

  $a; // retourne Hello
  $$a; // retourne World
  $$$a; // retourne Foo
  $$$$a; // retourne Bar
  $$$$$a; // retourne a

  $$$$$$a; // retourne Hello
  $$$$$$$a; // retourne World

?>
Il s'agit en fait de l'utilisation des variables dynamiques, ou les variables des variables, une astuce qui marche aussi (et heureusement) pour les fonctions et méthodes de classes.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
$foo = 'bar';
$bar = 'foobar';

function bar() {
    echo 'Hello world!';
}

function foobar() {
    echo 'Quelle belle journée';
}
$foo();    // Affiche Hello world!
$$foo();    // Affiche Quelle belle journée!
Toujours en PHP, connaissez-vous la classe standard ? Qui permet de se passer, dans certaines situations des tableaux associatives ou de déclarer inutilement des data-classes :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
$person = array();
$person['nom'] = 'John Doe';
$person['age'] = 42;

// devient 

$person = new stdClass();
$person->nom = 'bob';
$person->age = 5;
Il est même possible de « caster » un tableau associatif en Objet et l'utiliser comme tel :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
$obj = (object)array('nom' => 'bob', 'age' => 5);

echo $obj->nom;
Vous avez de nombreuses classes et vous souhaitez éviter de les parser et les charger toutes en mémoire pour n'en utiliser que quelques-unes ?

PHP a la solution, la routine __autoload() permet d'exécuter du code à chaque instanciation, ce qui permet entre autre, d'inclure le fichier de la classe en question :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
error_reporting(E_ALL);
set_include_path(get_include_path() . PATH_SEPARATOR . '../libs/');

function __autoload($classname) {
  // chaque classe est stockée dans un fichier unique dans le dossier libs "libs/{$classname}.class.php"
  
  echo $classname;
  include_once $classname . '.class.php';
}

$a = new model();
?>
Bref, ces quelques exemples exclusivement en PHP, illustre une réalité de tous les langages : ils ont des secrets !

Vous en connaissez certainement dans votre langage de prédilection. Alors n'hésitez pas ; faites en nous part.

Car rappelez-vous qu'un secret est, comme dit l'expression, « une chose que l'on ne répète qu'à une seule personne ».

Et vous ?

Quelles sont les astuces et secrets de développement favoris ? Dans quel contexte vous en servez-vous ? Comment avez-vous découvert ce secret ?


En collaboration avec Gordon Fowler