Quelles conventions de nommage des variables et des fonctions préférez-vous dans le code R?
Pour autant que je sache, il existe plusieurs conventions différentes, qui coexistent toutes dans une harmonie cacophonique:
1. Utilisation du séparateur de périodes, par exemple
stock.prices <- c(12.01, 10.12)
col.names <- c('symbol','price')
Avantages: a une priorité historique dans la communauté R, répandue dans tout le noyau R et recommandée par le guide de style R de Google .
Inconvénients: regorge de connotations orientées objet et déroutant pour les débutants en R.
2. Utilisation de traits de soulignement
stock_prices <- c(12.01, 10.12)
col_names <- c('symbol','price')
Avantages: Une convention commune dans de nombreux langages de programmation; préféré par Hadley Wickham's Style Guide , et utilisé dans les packages ggplot2 et plyr.
Inconvénients: non utilisé historiquement par les programmeurs R; est mappé de manière ennuyeuse à l'opérateur '<-' dans Emacs-Speaks-Statistics (modifiable avec 'ess-toggle-underscore').
3. Utilisation de la capitalisation mixte (camelCase)
stockPrices <- c(12.01, 10.12)
colNames <- c('symbol','price')
Avantages: semble avoir une large adoption dans plusieurs communautés linguistiques.
Inconvénients: a un précédent récent, mais pas utilisé historiquement (dans la base R ou dans sa documentation).
Enfin, comme si ce n'était pas assez déroutant, je dois souligner que le Guide de style de Google plaide pour la notation par points pour les variables, mais une capitalisation mixte pour les fonctions.
Le manque de style cohérent entre les packages R est problématique à plusieurs niveaux. Du point de vue du développeur, cela rend difficile la maintenance et l'extension du code des autres (en particulier lorsque son style est incompatible avec le vôtre). Du point de vue de l'utilisateur R, la syntaxe incohérente accentue la courbe d'apprentissage de R, en multipliant les façons dont un concept pourrait être exprimé (par exemple, cette fonction de conversion de date est-elle asDate (), as.date () ou as_date ()? Non, c'est comme. Date()).
la source
alllowercase
noms de variables, et beaucoup de droits-de-la-équation des noms très courts (x
,y
, etc.).ImfDataTransformed
ou la version naturelle étendueIMFDataTransformed
ne sont pas aussi faciles à lire que mon TOGGLEcamelCase préféré:IMFdataTransformed
...Réponses:
Bonnes réponses précédentes donc juste un peu à ajouter ici:
les traits de soulignement sont vraiment ennuyeux pour les utilisateurs de l'ESS; étant donné que ESS est assez largement utilisé, vous ne verrez pas beaucoup de traits de soulignement dans le code créé par les utilisateurs d'ESS (et cet ensemble comprend un tas d'auteurs de R Core ainsi que de CRAN, en dépit d'exceptions comme Hadley);
les points sont également mauvais parce qu'ils peuvent être mélangés dans une simple distribution de méthode; Je crois avoir lu une fois des commentaires à cet effet sur l'une des listes R: les points sont un artefact historique et ne sont plus encouragés;
nous avons donc un vainqueur clair toujours debout dans le dernier tour: camelCase. Je ne sais pas non plus si je suis vraiment d'accord avec l'affirmation de «manque de précendant dans la communauté R».
Et oui: le pragmatisme et la cohérence l'emportent sur le dogme. Donc, tout ce qui fonctionne et est utilisé par des collègues et co-auteurs. Après tout, nous avons encore des espaces blancs et des accolades pour discuter :)
la source
?make.names
semble suggérer que les noms séparés par des points sont préférés?J'ai fait une enquête sur les conventions de dénomination qui sont réellement utilisées sur CRAN qui ont été acceptées dans le R Journal :) Voici un graphique résumant les résultats:
Il s'avère (pas de surprise peut-être) que lowerCamelCase était le plus souvent utilisé pour les noms de fonction et les noms de période séparés les plus souvent utilisés pour les paramètres. Utiliser UpperCamelCase, comme le préconise le guide de style R de Google, est cependant très rare, et il est un peu étrange qu'ils préconisent l'utilisation de cette convention de dénomination.
L'article complet est ici:
http://journal.r-project.org/archive/2012-2/RJournal_2012-2_Baaaath.pdf
la source
print
correspond à toutes les conventions sauf UpperCamel et .OTHER_style.Souligne tout le chemin! Contrairement à l'opinion populaire, il existe un certain nombre de fonctions dans la base R qui utilisent des traits de soulignement. Courez
grep("^[^\\.]*$", apropos("_"), value = T)
pour les voir tous.J'utilise le style de codage officiel Hadley ;)
la source
J'aime camelCase quand le chameau fournit en fait quelque chose de significatif - comme le type de données.
dfProfitLoss, où df = dataframe
ou
vdfMergedFiles (), où la fonction prend un vecteur et crache un dataframe
Bien que je pense que _ ajoute vraiment à la lisibilité, il semble y avoir trop de problèmes avec l'utilisation de.-_ Ou d'autres caractères dans les noms. Surtout si vous travaillez dans plusieurs langues.
la source
Cela dépend de vos préférences personnelles, mais je suis le guide de style de Google car il est cohérent avec le style de l'équipe principale. Je n'ai pas encore vu de trait de soulignement dans une variable de base R.
la source
Comme je le souligne ici:
Comment la verbosité des identifiants affecte-t-elle les performances d'un programmeur?
il convient de garder à l'esprit à quel point vos noms de variables sont compréhensibles pour vos collègues / utilisateurs s'ils ne sont pas des locuteurs natifs ...
Pour cette raison, je dirais que les traits de soulignement et les points sont meilleurs que la capitalisation, mais comme vous le faites remarquer, la cohérence est essentielle dans votre script.
la source
Comme d'autres l'ont mentionné, les soulignements vont bousiller beaucoup de gens. Non, ce n'est pas verboten mais ce n'est pas particulièrement courant non plus.
L'utilisation de points comme séparateur devient un peu poilue avec les classes S3 et autres.
D'après mon expérience, il semble que beaucoup de mucks de haute qualité de R préfèrent l'utilisation de camelCase, avec une certaine utilisation de points et une poignée de soulignements.
la source
Habituellement, je renomme mes variables en utilisant un ix de traits de soulignement et une capitalisation mixte (camelCase). Les variables simples sont nommées à l'aide de traits de soulignement, exemple:
PSOE_votes -> nombre de voix pour le PSOE (groupe politique d'Espagne).
PSOE_states -> Catégoriel, indique l'état où le PSOE gagne {Aragon, Andalousie, ...)
PSOE_political_force -> Catégoriel, indique la position entre les groupes politiques du PSOE {premier, deuxième, troisième)
PSOE_07 -> Union des PSOE_votes + PSOE_states + PSOE_political_force à 2007 (h eader -> votes, états, position )
Si ma variable est le résultat d'une fonction appliquée dans une / deux variables, j'utilise une capitalisation mixte.
Exemple:
positionXstates <- xtabs (~ états + position, PSOE_07)
la source
J'ai une préférence pour les capitales mixtes.
Mais j'utilise souvent des points pour indiquer quel est le type de variable:
mixedCapitals.mat est une matrice. mixedCapitals.lm est un modèle linéaire. mixedCapitals.lst est un objet de liste.
etc.
la source