Какие соглашения об именах переменных и функций вы предпочитаете в коде R?
Насколько я могу судить, существует несколько различных условностей, и все они сосуществуют в какофонической гармонии:
1. Использование разделителя периода, например
stock.prices <- c(12.01, 10.12)
col.names <- c('symbol','price')
Плюсы: имеет историческое преимущество в сообществе R, преобладает во всем ядре R и рекомендовано Google's R Style Guide .
Минусы: изобилует объектно-ориентированными коннотациями и сбивает с толку новичков в R.
2. Использование подчеркивания
stock_prices <- c(12.01, 10.12)
col_names <- c('symbol','price')
Плюсы: общее соглашение во многих языках программирования; одобрено Руководством по стилю Hadley Wickham и используется в пакетах ggplot2 и plyr.
Минусы: исторически не использовался программистами R; раздражающе отображается на оператор '<-' в Emacs-Speaks-Statistics (можно изменить с помощью 'ess-toggle-underscore').
3. Использование смешанных заглавных букв (camelCase).
stockPrices <- c(12.01, 10.12)
colNames <- c('symbol','price')
Плюсы: похоже, получил широкое распространение в нескольких языковых сообществах.
Минусы: имеет недавний прецедент, но исторически не использовался (ни в базе R, ни в документации к ней).
Наконец, как бы это не сбивало с толку, я должен указать, что Руководство по стилю Google приводит доводы в пользу точечной записи для переменных, но смешанного использования заглавных букв для функций.
Отсутствие единообразия стиля в пакетах R проблематично на нескольких уровнях. С точки зрения разработчика, это затрудняет поддержку и расширение чужого кода (особенно там, где его стиль несовместим с вашим собственным). С точки зрения пользователя R непоследовательный синтаксис усиливает кривую обучения R за счет умножения способов выражения концепции (например, функция преобразования даты asDate (), as.date () или as_date ()? Нет, это как. Дата()).
ImfDataTransformed
или естественную расширенную версию IMFDataTransformed
не так легко читать, как мой любимый TOGGLEcamelCase: IMFdataTransformed
...
alllowercase
имен переменных, и множество прямых-из-уравнений очень коротких имен (x
,y
и т.д.).