AFUP Montpellier - 20 novembre 2025 - Smile
Julien Vinber
Dans le langage courant :
La qualité tend à désigner ce qui rend quelque chose supérieur à la moyenne.
ISO 9000 :
L'« aptitude d'un ensemble de caractéristiques intrinsèques d'un objet (produit, service, ...) à satisfaire des exigences ». Dans ce contexte, le terme « qualité » peut être quelquefois utilisé avec des qualificatifs tels que médiocre, bon ou excellent.
Et si on demandait directement aux utilisateurs ?
PS : merci les LLM. (J'ai peut-être ajouté d'aller un peu dans la caricature.)
"LA Qualité, c'est quand mon code est tellement propre et bien testé que je peux le relire six mois après en me disant 'putain, bien joué' au lieu de pleurer."
"Haaaa ! C'est bon, ça marche..."
"LA Qualité, c'est quand toutes les user stories passent en 'Done' avant la fin du sprint."
"LA Qualité, c'est quand ça fait exactement ce que je veux, que ça marche du premier coup, et que ça ne coûte pas plus cher que prévu."
"LA qualité, c'est quand ça marche comme avant."
"LA qualité ? C'est quand mes clients renouvellent leur licence sans négocier."
"LA Qualité, c'est livrer dans les temps et sous budget - peu importe ce qui se passe après."
Oui, vous avez tous raison. Mais...
Vous avez tous tort.
En vrac, c'est pour le plaisir.
Oui. Je sais. Il y a des exceptions.
Mais attention à ne pas les transformer en règles.
NON
Ou plus exactement de la quantification de LA Qualité.
=> Mais c'est un piège.
Voici une fonction.
public function diviser(int $nb1, int $nb2): float
{
try {
echo ($nb1 / $nb2);
} catch (DivisionByZeroError $e) {
$this->logger->error($e);
throw $e;
}
}
Et on va juger les tests de deux dev.
public function testDiviser()
{
$this->assertEquals(2, $this->math->diviser(10, 5));
$this->assertEquals(-2, $this->math->diviser(10, -5));
$this->assertEquals(2, $this->math->diviser(-10, -5));
$this->assertEquals(0, $this->math->diviser(0, 10));
}
public function testDiviser()
{
$this->expectException(\Throwable::class);
diviser(10, 0);
}
Maxime (couverture de code à 100 % et code plus vite)
Et pour le plaisir
declare(strict_types=1)
public function diviser(string $nb1, int $nb2): float
{
}
Allume vert les tests...
Je comprends pourquoi on cherche à quantifier.
Mais c'est loin d'être une bonne idée.
=> Ça pousse les mauvais à faire encore plus de merde.
Je ne suis pas à une contradiction près.
Visez pour VOUS le 100 %.
Non, pas d'excuse.
Réfléchissez et ignorez...
Tous les outils qui appliquent des règles permettent d'ignorer.
class Demonstration {
/**
* @codeCoverageIgnore
*/
public function ignorerLaMethode() {
$config = 'legacy_config';
$this->connect($config);
}
public function ignorerDesLignes($valeur) {
if ($valeur < 0) { return false; }
// @codeCoverageIgnoreStart
if (getenv('ENV') === 'dev') {var_dump($valeur);}
// @codeCoverageIgnoreEnd
return $valeur * 2;
}
}
Si l'entreprise vous demande de ne pas gêner les autres :
Alors c'est elle qui n'a rien compris.
???
function maFonction($maVariable)
{
if(!$maVariable) {
return false;
}
return 10/$maVariable;
}
Retenez a minima :
keep it simple, stupid, « garde-le simple, idiot »
Il est simple de faire compliqué, mais compliqué de faire simple.