Welche Konventionen zur Benennung von Variablen und Funktionen bevorzugen Sie im R-Code?
Soweit ich das beurteilen kann, gibt es verschiedene Konventionen, die alle in kakophoner Harmonie nebeneinander existieren:
1. Verwendung eines Periodentrenners, z
stock.prices <- c(12.01, 10.12)
col.names <- c('symbol','price')
Vorteile: Hat historische Vorrangstellung in der R-Community, die im gesamten R-Kern verbreitet ist und vom R Style Guide von Google empfohlen wird .
Nachteile: Reich an objektorientierten Konnotationen und verwirrend für R-Neulinge
2. Verwendung von Unterstrichen
stock_prices <- c(12.01, 10.12)
col_names <- c('symbol','price')
Vorteile: Eine gemeinsame Konvention in vielen Programmiergeschwindigkeiten; Von Hadley Wickhams Style Guide bevorzugt und in ggplot2- und plyr-Paketen verwendet.
Nachteile: Wird von R-Programmierern in der Vergangenheit nicht verwendet. ist in Emacs-Speaks-Statistics ärgerlicherweise dem Operator '<-' zugeordnet (änderbar mit 'ess-toggle-underscore').
3. Verwendung der gemischten Großschreibung (camelCase)
stockPrices <- c(12.01, 10.12)
colNames <- c('symbol','price')
Vorteile: Scheint eine breite Akzeptanz in mehreren Sprachgemeinschaften zu haben.
Nachteile: Hat einen aktuellen Präzedenzfall, wird aber historisch nicht verwendet (weder in der R-Basis noch in der Dokumentation).
Als ob es nicht verwirrend genug wäre, sollte ich schließlich darauf hinweisen, dass der Google Style Guide für die Punktnotation für Variablen, aber für die gemischte Großschreibung für Funktionen spricht.
Das Fehlen eines konsistenten Stils in allen R-Paketen ist auf mehreren Ebenen problematisch. Aus Entwicklersicht erschwert es das Verwalten und Erweitern des Codes anderer (insbesondere, wenn sein Stil nicht mit Ihrem eigenen übereinstimmt). Vom Standpunkt eines R-Benutzers aus steilert die inkonsistente Syntax die Lernkurve von R, indem sie die Art und Weise multipliziert, wie ein Konzept ausgedrückt werden kann (z. B. ist diese Datumsumwandlungsfunktion asDate (), as.date () oder as_date ()? Nein, es ist as. Datum()).
ImfDataTransformed
oder die natürliche erweiterte Version IMFDataTransformed
nicht so einfach zu lesen wie mein bevorzugter TOGGLEcamelCase: IMFdataTransformed
...
alllowercase
Variablennamen und viel gerade-aus-dem-Gleichung sehr kurzer Namen (x
,y
usw.).