Bạn thích quy ước nào để đặt tên biến và hàm trong mã R?
Theo như tôi có thể nói, có một số quy ước khác nhau, tất cả đều cùng tồn tại trong sự hài hòa cacophonous:
1. Sử dụng dấu phân cách, ví dụ:
stock.prices <- c(12.01, 10.12)
col.names <- c('symbol','price')
Ưu điểm: Có lịch sử ưu tiên trong cộng đồng R, phổ biến trong toàn bộ lõi R và được Hướng dẫn Kiểu R của Google đề xuất .
Nhược điểm: Đầy ẩn ý hướng đối tượng và gây nhầm lẫn cho người mới R
2. Sử dụng dấu gạch dưới
stock_prices <- c(12.01, 10.12)
col_names <- c('symbol','price')
Ưu điểm: Một quy ước chung trong nhiều ngôn ngữ lập trình; được ưa chuộng bởi Hướng dẫn phong cách của Hadley Wickham và được sử dụng trong gói ggplot2 và plyr.
Nhược điểm: Không được lập trình viên R sử dụng trong lịch sử; được ánh xạ một cách khó chịu tới toán tử '<-' trong Emacs-Speaks-Statistics (có thể thay đổi bằng 'ess-toggle-underscore').
3. Sử dụng cách viết hoa hỗn hợp (camelCase)
stockPrices <- c(12.01, 10.12)
colNames <- c('symbol','price')
Ưu điểm: Dường như được chấp nhận rộng rãi trong một số cộng đồng ngôn ngữ.
Nhược điểm: Có tiền lệ gần đây, nhưng không được sử dụng trong lịch sử (trong cơ sở R hoặc tài liệu của nó).
Cuối cùng, như thể nó chưa đủ khó hiểu, tôi phải chỉ ra rằng Hướng dẫn Kiểu của Google lập luận về ký hiệu dấu chấm cho các biến, nhưng viết hoa hỗn hợp cho các hàm.
Việc thiếu phong cách nhất quán giữa các gói R là vấn đề ở một số cấp độ. Từ quan điểm của nhà phát triển, nó làm cho việc duy trì và mở rộng mã của người khác trở nên khó khăn (đặc biệt là khi phong cách của nó không phù hợp với mã của bạn). Từ quan điểm của người dùng R, cú pháp không nhất quán sẽ mở ra đường cong học tập của R, bằng cách nhân các cách một khái niệm có thể được thể hiện (ví dụ: đó là hàm truyền ngày asDate (), as.date () hoặc as_date ()? Không, nó là. Ngày()).
ImfDataTransformed
hoặc phiên bản mở rộng tự nhiên IMFDataTransformed
không dễ dàng để đọc như TOGGLEcamelCase ưa thích của tôi: IMFdataTransformed
...
alllowercase
tên biến, và rất nhiều tên rất ngắn thẳng từ-the-phương trình (x
,y
, vv).