Code passe-partout - Boilerplate code

En programmation informatique, le code passe-partout ou simplement le code passe - partout sont des sections de code qui se répètent à plusieurs endroits avec peu ou pas de variation. Lorsqu'il utilise des langages considérés comme verbeux , le programmeur doit écrire beaucoup de code pour n'accomplir que des fonctionnalités mineures. Un tel code est appelé passe- partout .

Le besoin de passe-partout peut être réduit grâce à des mécanismes de haut niveau tels que la métaprogrammation (qui permet à l'ordinateur d'écrire automatiquement le code passe-partout nécessaire ou de l'insérer au moment de la compilation ), la convention sur la configuration (qui fournit de bonnes valeurs par défaut, réduisant le besoin de spécifier le programme détails dans chaque projet) et l' ingénierie axée sur les modèles (qui utilise des modèles et des générateurs de modèle à code, éliminant ainsi le besoin d'un code passe-partout manuel).

Origine

Le terme est né de l' entreprise de presse . Les chroniques et autres articles distribués par les syndicats de la presse écrite étaient envoyés aux journaux abonnés sous forme de planches d'impression préparées . En raison de leur ressemblance avec les plaques métalliques utilisées dans la fabrication des chaudières , elles sont devenues connues sous le nom de « plaques de chaudière » et leur texte résultant - « texte de plaque de chaudière ». Comme les histoires qui étaient diffusées par plaques passe-partout étaient généralement des « charges » plutôt que des nouvelles « sérieuses », le terme est devenu synonyme de texte répété et non original.

Un terme connexe est code de comptabilité , faisant référence à un code qui ne fait pas partie de la logique métier mais qui y est entrelacé afin de maintenir les structures de données à jour ou de gérer les aspects secondaires du programme.

Préambule

Une forme de passe-partout consiste en des déclarations qui, bien que ne faisant pas partie de la logique du programme ou de la syntaxe essentielle du langage , sont ajoutées au début d'un fichier source par habitude. L' exemple Perl suivant illustre le passe-partout :

#!/usr/bin/perl
use warnings;
use strict;

La première ligne est un shebang , qui identifie le fichier comme un script Perl qui peut être exécuté directement sur la ligne de commande (sur les systèmes Unix/Linux.) Les deux autres sont des pragmas activant les avertissements et le mode strict, qui sont mandatés par Perl à la mode. style de programmation .

L'exemple suivant est un passe- partout du langage de programmation C/C++ , #includeguard .

#ifndef MYINTERFACE_H
#define MYINTERFACE_H

...

#endif

Ceci vérifie et configure un indicateur global pour indiquer au compilateur si le fichier myinterface.h a déjà été inclus. Comme de nombreux fichiers interdépendants peuvent être impliqués dans la compilation d'un module, cela évite de traiter plusieurs fois le même en-tête (ce qui conduirait à des erreurs dues à plusieurs définitions portant le même nom).

En programmation orientée objet

Dans les programmes orientés objet , les classes sont souvent fournies avec des méthodes pour obtenir et définir des variables d'instance. Les définitions de ces méthodes peuvent souvent être considérées comme passe-partout. Bien que le code varie d'une classe à l'autre, sa structure est suffisamment stéréotypée pour qu'il soit mieux généré automatiquement qu'écrit à la main. Par exemple, dans la classe Java suivante représentant un animal de compagnie, presque tout le code est passe-partout à l'exception des déclarations de Pet , name et owner :

Java

public class Pet {
    private String name;
    private Person owner;

    public Pet(String name, Person owner) {
        this.name = name;
        this.owner = owner;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Person getOwner() {
        return owner;
    }

    public void setOwner(Person owner) {
        this.owner = owner;
    }
}

La plupart du passe-partout dans cet exemple existe pour fournir l' encapsulation . Si le nom et le propriétaire des variables étaient déclarés comme public , les méthodes accesseur et mutateur ne seraient pas nécessaires.

Pour réduire la quantité de passe-partout, de nombreux frameworks ont été développés, par exemple Lombok pour Java. Le même code que ci-dessus est généré automatiquement par Lombok à l'aide d' annotations Java , qui est une forme de métaprogrammation :

@AllArgsConstructor
@Getter
@Setter
public class Pet {
    private String name;
    private Person owner;
}

Scala

Dans certains autres langages de programmation, il peut être possible d'obtenir la même chose avec moins de passe-partout, lorsque le langage prend en charge ces constructions courantes. Par exemple, l'équivalent du code Java ci-dessus peut être exprimé en Scala en utilisant une seule ligne de code :

case class Pet(var name: String, var owner: Person)

C#

Ou en C# à l' aide des propriétés automatiques avec des champs de sauvegarde générés par le compilateur :

public class Pet
{
    public string Name { get; set; }
    public Person Owner { get; set; }
}

Méthode passe-partout

En plus des déclarations, les méthodes des langages POO contribuent également à la quantité de passe-partout. Une étude de 2015 sur les projets Java populaires montre que 60% des méthodes peuvent être identifiées de manière unique par l'occurrence de 4,6% de ses jetons, ce qui rend les 95,4% passe-partout restants sans rapport avec la logique. Les chercheurs pensent que ce résultat se traduirait par des sous-programmes dans les langages procéduraux en général.

HTML

En HTML , le passe-partout suivant est utilisé comme modèle vide de base et est présent dans la plupart des pages Web :

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8"/>
  <title>Test</title>
</head>
<body>

</body>
</html>

Le WHATWG HTML Living Standard définit que les balises <html>, <head>et <body>peuvent être omises en toute sécurité dans la plupart des circonstances. La <meta charset="UTF-8">balise est techniquement redondante lorsqu'elle provient directement d'un serveur Web configuré pour envoyer le codage de caractères dans un en-tête HTTP, bien qu'elle devienne utile lorsque la réponse HTML est enregistrée dans un .htmlfichier, un cache ou une archive Web. Le guide de style HTML/CSS de Google recommande d'omettre toutes les balises facultatives, ce qui réduit considérablement le nombre de balises passe-partout. Le World Wide Web Consortium déclare que l'élément <title>ne doit pas être vide :

<!DOCTYPE html>
<title>Test</title>

Voir également

Les références