En débutant dans le développement de sites web, d’applications ou de bases de données, nous nous demandons souvent comment nommer les choses. Voici quelques pistes pour vous aider, vous inspirer et minimiser les risques d’erreurs.
Une convention de nommage dans la programmation informatique est un ensemble de règles destinées à choisir les identifiants (noms des éléments) dans le code source et la documentation. Pour mieux comprendre les avantages et les difficultés de ceci, visitez l’article complet de wikipedia.
Pourquoi suivre une convention de nommage ?
D’abord parce qu’une machine, un système informatique, un système de fichiers n’est pas du tout humain. Réduit à sa plus petite échelle, c’est de l’électricité qui oscille entre 0 et 5 volts à un rythme effréné et l’on souhaite en fin de compte que le résultat ait un aspect que nous pouvons comprendre. Entre les deux, il y a souvent une machine, un OS, un fichier et une application qui pour finir s’affiche sur un écran.
Il faut donc séparer le résultat que l’on voit et la façon dont on y parvient. Séparer l’aspect humain de l’aspect technique. Cet article traite du second.
Nom des fichiers et des dossiers
Supposons que nous venions de réaliser un logo qui ne servira que durant l’été et qu’il faille l’enregistrer. Notre esprit nous suggère de le nommer:
Logo Haute Résolution, d’été 2018.jpg
Ce nom ne convient pas, même si localement sur votre ordinateur tout ira bien. C’est dans votre mémoire, dans les applications et sur internet que ça va coincer.
- Il contient des majuscules – Sur internet, une majuscule n’est pas équivalent à une minuscule. C’est le cas seulement sur Windows et MacOS.
Ce qui signifie que si vous devez l’écrire dans du code, vous devrez vous en souvenir exactement. Vous n’aurez pas toujours le nom exact du fichier devant les yeux.
Si vous n’en utilisez pas, ce sera moins joli à lire pour un humain, mais vous allez bien mieux vous en souvenir. - Il contient des accents – Sur internet, un accent doit être encodé (remplacé par un code) et ce code n’est pas identique selon la plateforme (Windows ISO 8859-1, MacOS Roman).
Ne pas utiliser d’accent vous assure une compatibilité totale entre toutes les plateformes. - Il contient des espaces – Sur internet, lors de l’accès à un fichier au sein d’un URI (URL) les espaces ne sont pas autorisés. Il faudra donc remplacer l’espace par un code (%20).
Ne pas utiliser d’espaces, vous évite de devoir encoder le nom du fichier. Utilisez un _ (underscore) ou – (tiret) à la place. Personnellement, j’emploie le – (tiret) qui ne nécessite qu’un doigt sur le clavier, mais le _ (underscore) dans les noms qui seront calculés en programmation ou dans les bases de données, car le – (tiret) sera alors interprété comme une soustraction. - Il contient des signes spéciaux – L’apostrophe et la ponctuation sont des signes spéciaux. Certains signes ont une signification particulière ( . ‘ » , ; ? = # / : < > ) servent tous à quelque chose de particulier dans un fichier, une base de donnée, en programmation ou sur internet. Le point est en principe suivi du type de fichier.
Ne pas utiliser de signes, évite des effets indésirables et ne nécessite pas de les encoder.
Quatre signes sont toutefois autorisés _ (underscore) – (tirait) et les parenthèses. - Il contient une date – Si une année plus tard vous changez de logo, vous allez probablement refaire un nouveau fichier et le nommer « …decembre_2019.jpg » mais ensuite il vous faudra penser à mettre à jour toutes les applications, toutes vos pages web ainsi que tous les sites liés qui utilisaient votre logo, afin de les informer que le logo à changé et qu’il faut se lier au nouveau. C’est un travail titanesque, voire impossible.
A la place, archivez l’ancien fichier en le nommant avec une date, mais gardez toujours le même nom pour celui qui servira de référence.
Il convient donc de le nommer :
logo_haute_resolution.jpg ou logo-haute-resolution.jpg selon votre goût.
Si l’on traite de multiples fichiers qui ont les mêmes noms, il convient de leur ajouter un nombre ou une date. Dans ce cas il est conseillé de leur permettre de garder un ordre.
Les humains feraient de cette liste
1, 2 ,3 ,4 ,10 , 11 , 12 , 100, 101, 102, 200
Les machines les mettent dans cet ordre:
1,10,100,101,102,11,12,2,200
Ce qui ne convient à personne
Il est préférable de les nommer:
001,002,003,004,010,011,012,100,101,102,200
Ainsi, l’ordre est maintenu jusqu’à 999.
Prévoyez suffisamment de numéros pour ne pas dépasser le nombre de zéros d’origine.
Pour 1 million de fichiers, on les numérotera de 000000 à 999999
En présence de dates, pour les trier naturellement par ordre chronologique, on va garder la règle précédente et les mettre dans l’ordre inverse. 1er avril 2020 devient 2020-04-01 et 25 décembre de l’an zéro, 0000-12-25
Pour un dossier, utilisez les mêmes règles, pour les mêmes raisons.
Conclusion
Pour nommer un fichier, utilisez les lettres de a à z, en minuscule ainsi que les chiffres de 0 à 9.
Pour séparer les mots, n’utilisez pas d’espace, utilisez l’underscore _ ou tiret – à la place.
Évitez tout autre signe ou ponctuation.
Bases de données, Tables et Rubriques
Imaginons que nous ayons à créer une base de données contenant les logos de nos clients. Elle contiendra deux tables.
Une base de données est un fichier, les 5 règles précédentes s’imposent. Nous allons donc la nommer:
images_entreprises
Pourquoi pas logos_clients ?
Notre projet actuel se limite peut-être aux logos de nos clients, mais s’il fonctionne bien il pourrait évoluer facilement et permettre de stocker des photos et des logos, pour toutes les entreprises partenaires, clients et fournisseurs.
Nommons à présent nos deux tables, les mêmes règles de nommage s’appliquent, bien qu’il existe une variante avec majuscules:
- entreprises ou Entreprises
- images ou Images
Il convient de créer des tables selon leur nature et de les nommer afin de pouvoir les faire évoluer facilement. Dans un autre registre, on ne va pas créer une table chiens et une autre chats, mais une table animaux, qui nous permettra plus tard de gèrer aussi des poissons ou des oiseaux si nécessaire.
Un logo est une image d’un certain type, tout comme une photo. Il sera facile de les distinguer par une rubrique.
Un client et un fournisseur sont de même nature, ils partagent énormément de caractéristiques en commun, ce sont touts deux des entreprises.
Toute table doit comporter une clé primaire (primary key), un identifiant unique et invariable permettant à une autre table de faire la liaison avec notre enregistrement. Il n’y a absolument pas besoin qu’elle soit humainement compréhensible, bien au contraire. Le nom de l’entreprise n’est pas une clé primaire, elle est probablement unique, mais pas invariable. Une entreprise peut soudain changer de nom, même si c’est rare. Souvent une clé primaire est un numéro automatique ou une chaîne de texte complexe unique au sein de la base de données.
Les autres tables auront alors une clé étrangère (foreign key) y faisant référence.
Il s’agit ici de parler surtout des règles de nommage. Si vous souhaitez plus d’informations sur les bases de données, vous trouverez tout ce qu’il faut sur wikipedia.
Fabriquons quelques rubriques permettant de:
- Voir une entreprise et son logo officiel
- Identifier le directeur et son adresse mail
- Cliquer sur un lien pour aller sur leur site internet
- Voir l’adresse postale
D’abord sans les majuscules
entreprises | La table est au pluriel, elle en contient plusieurs |
pk_entreprise | (Primary Key, clé primaire) unique pour une seule entreprise, c’est pourquoi elle est au singulier |
entreprise_nom | Le nom de l’entreprise |
entreprise_type | Le type d’entreprise, client ou fournisseur |
fk_image | (Foreign Key, clé secondaire) La clé de l’image pour se lier à une seule image identifiant l’entreprise, son logo. |
directeur_nom | Le nom de famille du directeur |
directeur_prenom | Le prénom du directeur |
directeur_email | L’adresse mail du directeur |
uri_protocole | Pour le protocole internet (http ou https) |
uri_adresse | Pour le nom de domaine ( www.truc.com) |
adr_rue | La rue de l’adresse postale |
adr_case_postale | La case postale de l’adresse postale |
adr_npa | Le code postal pour l’adresse postale |
adr_ville | La ville pour l’adresse postale |
calc_adresse_postale | la rubrique calculée qui composera l’adresse postale |
calc_hyperlink | la rubrique calculée qui appondra l’adresse au protocole afin de créer l’hyperlien |
Et pour stocker les logos dans la table image:
images | La table est au pluriel, elle en contient plusieurs |
pk_image | (Primary Key, clé primaire) unique pour une seule image, elle est au singulier |
nom_fichier | le nom du fichier |
fk_entreprise | (Foreign Key, clé secondaire) de l’entreprise à laquelle elle appartient |
uri_protocole | Pour afficher l’image, le protocole internet (http ou https) |
uri_adresse | L’adresse web où se trouve l’image |
calc_image_source | la rubrique calculée qui appondra l’adresse au protocole afin d’obtenir la source de l’image |
Notre recommendation
prefixe de groupe et noms propres
Entreprises | La table est au pluriel, elle en contient plusieurs |
ID_Entreprise | (Primary Key, clé primaire) unique pour une seule entreprise, c’est pourquoi elle est au singulier |
entreprise_Nom | Le nom de l’entreprise |
entreprise_Type | Le type d’entreprise, client ou fournisseur |
Image_ID | (Foreign Key, clé secondaire) Ici, on place _ID à la fin, pour l’identifier en clé secondaire, qui la lie à une seule image identifiant l’entreprise. Son logo |
directeur_Nom | Le nom de famille du directeur |
directeur_Prenom | Le prénom du directeur |
directeur_Email | L’adresse mail du directeur |
uri_Protocole | Pour le protocole internet (http ou https) |
uri_Adresse | Pour le nom de domaine ( www.truc.com) |
adr_Rue | La rue de l’adresse postale |
adr_CasePostale | La case postale de l’adresse postale |
adr_NPA | Le code postal pour l’adresse postale |
adr_Ville | La ville pour l’adresse postale |
_AdressePostale | la rubrique calculée qui composera l’adresse postale |
_Hyperlink | la rubrique calculée qui appondra l’adresse au protocole afin de créer l’hyperlien |
Et pour stocker les logos dans la table image:
Images | La table est au pluriel, elle en contient plusieurs |
ID_Image | (Primary Key, clé primaire) unique pour une seule image, elle est au singulier |
NomFichier | le nom du fichier |
Entreprise_ID | (Foreign Key, clé secondaire) de l’entreprise à laquelle elle appartient |
uri_Protocole | Pour afficher l’image, le protocole internet (http ou https) |
uri_Adresse | L’adresse web où se trouve l’image |
_ImageSource | la rubrique calculée qui appondra l’adresse au protocole afin d’obtenir la source de l’image |
Conclusion
L’utilisation de préfixes est fortement recommandée, afin de grouper des rubriques et clarifier leur utilité.
Nommer une rubrique seulement « adresse » ou « nom« , n’a de sens que si aucune ambiguïté n’est possible.
Ici il y en aurait eu; « adresse web » ou « adresse postale », « nom d’entreprise » ou « nom du directeur ».
Les deux tables possèdent des rubriques ayant un nom identique, c’est tout à fait courant. Il n’est pas nécessaire d’utiliser un préfixe avec le nom de la table, ceci ne fait que les rallonger inutilement. Et ça fait sens de les garder ainsi, car en principe leur contenu est similaire.
Codage
En programmation, les règles de nommage sont importantes afin de distinguer les variables, les objets ou les classes.
Ces règles peuvent varier d’un langage à un autre mais ceci s’applique aux plus courrants (java, C#, php, javascript, css, …)
Prenons par exemple un cas où nous devons coder des descriptions de logos.
- On utilise les lettres de a à z et de A à Z, les variantes entre majuscules et minuscules ayant un sens.
- On commence par une majuscule, lorsqu’on nomme un objet ou une classe.
L’objet permettant de décrire un logo se nommerait: DescriptionLogo - On commence par une minuscule, s’il s’agit d’une variable.
La variable qui instancie l’objet se nommerait: descriptionLogo - Jamais d’espace. En programmation, l’espace sert à séparer les éléments d’une instruction.
L’instruction qui crée la variable instanciant un objet serait: private descriptionLogo = new DescriptionLogo(); - Jamais de ponctuation ou de signes spéciaux. En programmation ils servent à la syntaxe de nos instructions.
Si notre description de logo contient une propriété de texte, un point permet de l’atteindre: Print( descriptionLogo.text ); - Jamais d’accents. Pour éviter les problèmes d’encodage lorsqu’on passe d’une plateforme à une autre.
- On utilise rarement des chiffres. En général, si on en a besoin, c’est qu’on a des valeurs diverses pour une variable. Il faut alors créer un tableau (Array) dont le chiffre sera l’index de la variable.
Si nous avions de multiples descriptions, on appellerait chacune d’entre elle par:
descriptionLogo[ 0 ], descriptionLogo[ 1 ], etc…
Conclusion
Chaque langage de programmation et chaque personne a ses propres conventions et convictions. Cet article n’est pas une norme, il s’agit là surtout de répondre à des questions que nous pouvons parfois nous poser, surtout lorsqu’on commence à inter-agir avec un système informatique.
The primary kind uses web-based connects whereas the second sort employs downloadable connects just.