Bonnes pratiques de programmation
Les bonnes pratiques de programmations doivent permettre d'obtenir un code fiable, évolutif et maintenable (pérennité).
Note
Un code est plus souvent lu que modifié.
Nommer les fichiers
- Préférer avec la méthode snake (ma_fonction) à la place de camel (maFonction).
- Des noms explicites et courts.
- Ajouter un numéro pour les éléments ordonnés (
00_download.R
,01_explore.R
).
Organisation du script
- Utiliser des séparateurs dans le code pour distinguer les différentes parties (
#--------------
). - Pas d'espace entre pour les éléments entre parenthèse.
- Un espace uniquement après les virgules.
- Se limiter à 80 caractères par ligne.
- Nommer avec la méthode snake (ma_fonction) à la place de camel (maFonction).
Variable
Nommer des variables avec un nom explicite et en anglais :
Nom | Type |
---|---|
is_fraise |
booélen |
bo_valide_annee |
vecteur booléen |
chr_letters |
texte |
int_currency |
1:10 |
df_mtcars |
dataframe |
dt_iris |
data |
- Pour les constantes utiliser des majuscule :
CSTE
Foncions
- Employer des verbes :
import_data_fct()
. - Pour les fichiers avec une seul fonction, nommer le fichier comme la fonction.
R
- Bonnes pratiques git R par l'INSEE.
- Mastering Shiny livre de référence sur le développement d'applations Shiny.
- Les bonne pratiques de développement R par l'INRAE.
- Package Bookdown ecrire des livres (et de la documentation avec R).
- Golem, optimise le développement des applications shiny.
- roxygen2, doc sur les fonctions R.
-
the Book of Apps for Statistics Teaching (BOAST), bouquin portait sur le développement d'applications R Shiny qui semble assez complet.
-
utiliser des séparateurs pour découper le code en partie et faciliter lecture :
# title -------------------------
# =============================
-
charger les packages au début du script.
- limiter le nombre de caractères maximum à 80 par ligne.
- pour le texte utiliser
"
à la place de'
. - les fonction sans argument sont déclarer sans
()
.
Note
Quand le developpement commence par la documentation - Rtask (thinkr.fr) (a lire)
Pacakges utils :
* pour le versionnage git
.
* pour la documentation rmarkdown
.
* pour automatiser les tests that
Chemins
- éviter
setwd()
pour préférer les chemins relatifs avec la fonctionhere()
du packagelibrary(here)
.Usethis::proj_sitrep()
permet de vérifier que tout est installé correctement.
Comment nommer les choses explicitement : What They Forgot to Teach You About R - 5 How to name files (rstats.wtf)
Environnement reproductible https://thinkr.fr/dockeriser-application-shiny/
Historiser les versions
Sauvegarder et gérer les différentes versions (permet notamment de revenir en arrière en cas de pb). Garder uentrace de l'historique des modif Permet un travaill collaboratif en permettant de savoir qui a fait les modfi et pourquoi. Fusionner le travail de plusierus personnes sans perdre de l'information
A utiliser dans le cas de developpement de package R Transformer un dossier en projet git synchronisé sur Github ou Gitlab - Rtask (thinkr.fr) https://rtask.thinkr.fr/fr/quand-le-developpement-commence-par-la-documentation/
Python
def multiplie_nombres(nombre1, nombre2):
"""Multiplication de deux nombres entiers.
Cette fonction ne sert pas à grand chose.
Parameters
----------
nombre1 : int
Le premier nombre entier.
nombre2 : int
Le second nombre entier.
Avec une description plus longue.
Sur plusieurs lignes.
Returns
-------
int
Le produit des deux nombres.
"""
return nombre1 * nombre2
Controler la qualité de son code soit en ligne pep8online
soit avec des library comme
pycodestyle
pour le code.pydocstyle
pour la doctring (documentaiton).pylint
comprend le contexte du code et propose des éléments d'amélioration.