Konvensi mana untuk penamaan variabel dan fungsi yang Anda sukai dalam kode R?
Sejauh yang saya tahu, ada beberapa konvensi berbeda, yang semuanya hidup berdampingan dalam harmoni yang riuh rendah:
1. Penggunaan pemisah periode, misalnya
stock.prices <- c(12.01, 10.12)
col.names <- c('symbol','price')
Pro: Memiliki latar belakang sejarah dalam masyarakat R, lazim di seluruh inti R, dan direkomendasikan oleh Google R Style Guide .
Kekurangan: Penuh dengan konotasi berorientasi objek, dan membingungkan bagi pemula
2. Penggunaan garis bawah
stock_prices <- c(12.01, 10.12)
col_names <- c('symbol','price')
Kelebihan: Konvensi umum dalam banyak bahasa pemrograman; disukai oleh Panduan Gaya Hadley Wickham , dan digunakan dalam paket ggplot2 dan plyr.
Kekurangan: Tidak secara historis digunakan oleh programmer R; secara menjengkelkan dipetakan ke operator '<-' di Emacs-Speaks-Statistics (dapat diubah dengan 'ess-toggle-underscore').
3. Penggunaan huruf besar campuran (camelCase)
stockPrices <- c(12.01, 10.12)
colNames <- c('symbol','price')
Kelebihan: Tampaknya dapat diadopsi secara luas di beberapa komunitas bahasa.
Kekurangan: Memiliki preseden terkini, tetapi tidak digunakan secara historis (baik dalam basis R atau dokumentasinya).
Akhirnya, seolah-olah itu tidak cukup membingungkan, saya harus menunjukkan bahwa Panduan Gaya Google mengusulkan notasi titik untuk variabel, tetapi kapitalisasi campuran untuk fungsi.
Kurangnya gaya yang konsisten di seluruh paket R menjadi masalah di beberapa level. Dari sudut pandang pengembang, itu membuat pemeliharaan dan perluasan kode orang lain menjadi sulit (khususnya jika gayanya tidak sesuai dengan gaya Anda). Dari sudut pandang pengguna R, sintaks yang tidak konsisten mempertajam kurva pembelajaran R, dengan mengalikan cara sebuah konsep dapat diekspresikan (misalnya apakah fungsi tanggal casting asDate (), as.date (), atau as_date ()? Tidak, itu sebagai. Tanggal()).
sumber
alllowercase
nama variabel, dan banyak nama yang sangat singkat lurus dari-the-persamaan (x
,y
, dll).ImfDataTransformed
atau versi natural extendedIMFDataTransformed
tidak semudah membaca TOGGLEcamelCase yang saya sukai:IMFdataTransformed
...Jawaban:
Jawaban sebelumnya bagus jadi hanya sedikit untuk ditambahkan di sini:
garis bawah sangat mengganggu bagi pengguna ESS; mengingat bahwa ESS cukup banyak digunakan, Anda tidak akan melihat banyak garis bawah dalam kode yang dibuat oleh pengguna ESS (dan set itu mencakup sekumpulan R Core serta penulis CRAN, meskipun demikian pengecualian seperti Hadley);
titik juga jahat karena dapat tercampur dalam pengiriman metode sederhana; Saya yakin saya pernah membaca komentar tentang efek ini di salah satu daftar R: titik adalah artefak sejarah dan tidak lagi didorong;
jadi kami memiliki pemenang yang jelas masih berdiri di babak terakhir: camelCase. Saya juga tidak yakin apakah saya benar-benar setuju dengan pernyataan 'kurang presenden di komunitas R'.
Dan ya: pragmatisme dan konsistensi mengalahkan dogma. Jadi apa pun yang berhasil dan digunakan oleh kolega dan rekan penulis. Bagaimanapun, kita masih memiliki ruang kosong dan kawat gigi untuk diperdebatkan :)
sumber
?make.names
tampaknya menyarankan bahwa nama yang dipisahkan titik lebih disukai?Saya melakukan survei tentang konvensi penamaan apa yang sebenarnya digunakan di CRAN yang diterima di Jurnal R :) Berikut adalah grafik yang merangkum hasil:
Ternyata (mungkin tidak ada kejutan) bahwa lowerCamelCase paling sering digunakan untuk nama fungsi dan nama period.separated paling sering digunakan untuk parameter. Namun untuk menggunakan UpperCamelCase, seperti yang disarankan oleh panduan gaya R Google sangat jarang, dan agak aneh bahwa mereka menganjurkan menggunakan konvensi penamaan itu.
Makalah lengkapnya ada di sini:
http://journal.r-project.org/archive/2012-2/RJournal_2012-2_Baaaath.pdf
sumber
print
cocok dengan semua konvensi kecuali UpperCamel dan .OTHER_style.Garis bawahi sepenuhnya! Bertentangan dengan pendapat umum, ada sejumlah fungsi di basis R yang menggunakan garis bawah. Lari
grep("^[^\\.]*$", apropos("_"), value = T)
untuk melihat semuanya.Saya menggunakan gaya pengkodean Hadley resmi ;)
sumber
Saya suka camelCase ketika unta benar-benar memberikan sesuatu yang berarti - seperti tipe data.
dfProfitLoss, dengan df = dataframe
atau
vdfMergedFiles (), di mana fungsinya mengambil vektor dan mengeluarkan kerangka data
Meskipun saya pikir _ benar-benar menambah keterbacaan, sepertinya ada terlalu banyak masalah dengan penggunaan.-_ Atau karakter lain dalam nama. Terutama jika Anda bekerja dalam beberapa bahasa.
sumber
Ini tergantung pada preferensi pribadi, tetapi saya mengikuti panduan gaya google karena konsisten dengan gaya tim inti. Saya belum melihat garis bawah dalam variabel di basis R.
sumber
Seperti yang saya tunjukkan di sini:
Bagaimana verbositas pengidentifikasi mempengaruhi kinerja programmer?
perlu diingat betapa dapat dipahami nama variabel Anda bagi rekan kerja / pengguna jika mereka bukan penutur asli ...
Oleh karena itu, menurut saya garis bawah dan titik lebih baik daripada penggunaan huruf besar, tetapi seperti yang Anda tunjukkan, konsistensi sangat penting dalam skrip Anda.
sumber
Seperti yang telah disebutkan orang lain, garis bawah akan mengacaukan banyak orang. Tidak, ini bukan verboten tapi juga tidak umum.
Menggunakan titik-titik sebagai pemisah menjadi sedikit rumit dengan kelas S3 dan sejenisnya.
Dalam pengalaman saya, sepertinya banyak muckity muck dari R yang lebih menyukai penggunaan camelCase, dengan beberapa penggunaan titik dan sedikit garis bawah.
sumber
Biasanya saya mengganti nama variabel saya menggunakan ix garis bawah dan kapitalisasi campuran (camelCase). Variabel sederhana penamaan menggunakan garis bawah, contoh:
PSOE_votes -> jumlah suara untuk PSOE (kelompok politik Spanyol).
PSOE_states -> Categorical, menunjukkan negara bagian di mana PSOE menang {Aragon, Andalucia, ...)
PSOE_political_force -> Categorial, menunjukkan posisi antara kelompok politik PSOE {pertama, kedua, ketiga)
PSOE_07 -> Persatuan PSOE_votes + PSOE_states + PSOE_political_force pada 2007 (h eader -> suara, negara bagian, posisi )
Jika variabel saya adalah hasil dari fungsi yang diterapkan di satu / dua Variabel, saya menggunakan kapitalisasi campuran.
Contoh:
positionXstates <- xtabs (~ status + posisi, PSOE_07)
sumber
Saya memiliki preferensi untuk mixedCapitals.
Tapi saya sering menggunakan titik untuk menunjukkan jenis variabelnya:
mixedCapitals.mat adalah sebuah matriks. mixedCapitals.lm adalah model linier. mixedCapitals.lst adalah objek daftar.
dan seterusnya.
sumber