Quoi ?
-
Une convention de nommage dans la programmation informatique est un ensemble de règles de codage destinées à choisir les identifiants logiciels (noms des éléments du programme) dans le code source et la documentation. – Wikipedia
- Une règle de nommage (exemple Camelcase?) \neq Ensemble de conventions de nommage, (exemple prettier?)
Pourquoi ça existe ?
- Code source + facile à lire et + agréable
- Indispensable pour la collaboration en équipe
- Évite des erreurs bêtes type naming collision 1 – doublons / namespace
(depuis) Quand ?
- https://fr.wikipedia.org/wiki/ISO/CEI_11179-2 norme de balisage / métadonnée \Rightarrow 1re version en 1994
Date Création Language | Date Création outils pour gérer des conventions |
---|---|
Python: 1991 | pycodestyle \RA 2008 |
OCaml: 1996 | ocamlformat \RA 2018 |
JS: 1996 | eslint \RA 2014 |
Les languages utilisés par un grand nombre de développeur ont un outil de convention de nommage depuis relativement longtemps, ce qui montre le besoin et la demande pour ce type d’outil
Combien ?
- Contrainte \rightarrow on doit suivre une convention
- Parfois outil intégré dans IDE pour rendre ça + simple
- Parfois configurable à souhait (dépende de l’outil)
Impact ?
- Un peu le même que les commentaires, permet de pouvoir plus facilement s’y remettre plus tard, meilleure communication dans équipe, éclaircie les cas ambigus
- Tant qu’il y a plein de conventions, ça va, mais s’il n’y en a qu’une, et que tout le monde la respecte, tous les morceaux de codes se ressembleront et ce sera moins fun? (- de liberté, style de chacun noyé dans la masse)
- exemple : dans une entreprise -> on ne choisit pas sa convention de nommage
- En même temps si chacun avait sa propre convention ça perdrait un peu de son intérêt
- Pas totalement car ça aide même quand on travaille seule (cf namespace collission)
Qui ?
- Entreprise, en interne
- Les languages, exemple: PEP8 pour python
- Organisation, par exemple Mozilla utilise Prettier pour pdf.js
Comment ?
- Avec des outils (parfois intégrés aux IDE)
- Prettier, ESLint
- clang-format
- ocamlformat
- En suivant les recommandations des languages
Exemple
- Comment on écrit des variables ?
uneVariable
?UneVariable
?UNEVARIABLE
?une_variable
? etc.- il peut y avoir une différence entre classes, structures, fonctions, variables, etc.
- Souvent, pour ne pas dire tout le temps, les différences sont directement liés à ce que l’on nomme. Par exemple:
- variable lambda:
une_variable
ouuneVariable
- une classe:
UneClasse
- un type:
nom_t
out_nom
- une structure:
nom_s
ous_nom
- une constante;
CONSTANTE
- variable lambda:
- Espacement/tabulation ? 4/2 espaces, une tabulation ?
- Limite max de caractères par ligne ?
- Espace entre accolade ?
{ a = 2 ; b = 3 }
, espace entre assignations ?a = 2
oua=2
- Structure des dossiers ?
/h/truc.h
ou/includes/truc.h
- etc.
Conventions standards
Outils utilisés pour ses conventions
- C/C++
- Compilateur
- GCC/G++ avec les flags -std=… et -pedantic qui forcent la compatibilité avec un standard du language spécifique
- Code avec clangformat (fonctionne aussi avec Java/JS/JSON/Objective-C/C#)
- basé sur LibFormat \RA références plusieurs conventions de différents groupes :
- personnalisable avec un fichier de configuration, ou possible d’utiliser un template avec l’option
--style
- plusieurs plugins pour intégrer directement dans n’importe quel IDE
- Compilateur
- Python
- se base sur pycodestyle qui permet de se conformer à PEP8 qui est le standard de style pour python
- autopep8 \ra le plus utilisé, se conforme fortement à pep8, configurable
- black \ra force une configuration (= peu d’option de configuration)
- yapf \ra développé par google, ressemble à clangformat, énormément configurable + permet d’appliquer des styles de grands groupes comme facebook, google (et bien sûr, tjrs pep8)
- se base sur pycodestyle qui permet de se conformer à PEP8 qui est le standard de style pour python
- OCaml
- ocamlformat permet de faire comme les autres outils, c’est configurable et intégré aux IDEs
- Javascript…
- ESlint \ra paramétrable sur tout les domaines des conventions de nommage (bonne documentation pour aider à comprendre les nombreux warnings). permet aussi de suivre l’état du code comme des variables non définies qui serait appellées, etc.
- Prettier \ra ne s’occupe que du style du code, pas de l’aspect “conseil”
Il faut donc un outil différent pour chaque language car les conventions varient, mais au final tout les outils font basiquement la même chose et on relativement les mêmes fonctionnalités, mise a part la possibilité de configurer plus ou moins un outil
Formations sur internet
La plupart des formations sur internet recommande fortement de suivre une convention de nommage, et explique plus généralement ce que c’est, comme par exemple :
- recommande d’utiliser un nom de variable explicite
- donne un exemple de convention à utiliser
Idée pour implémentation
Faire un outil qui pose plein de questions pour connaître les envies du développeur et générer un fichier compatible avec les languages souhaités qui répond à ces exigences?
Sources
-
https://en.wikipedia.org/wiki/Naming_convention_(programming)
-
https://tdinfo.phelma.grenoble-inp.fr/2Aproj/fiches/coding_styles.pdf
-
reregarder wikipedia fr
TODO rendu :
- intro: plus tard
- pk ? en quoi ca consiste ?
- détail différents types de convention (ensemble C / python)
- outils existants
- ccl: réalisation