2009-12-22 69 views
95

Quy ước đặt tên biến và chức năng nào bạn thích trong mã R?Phong cách ưa thích của bạn cho các biến đặt tên trong R là gì?

Theo như tôi có thể nói, có những công ước khác nhau, tất cả đều cùng tồn tại trong hòa cacophonous:

1. Sử dụng phân kỳ, ví dụ

stock.prices <- c(12.01, 10.12) 
    col.names <- c('symbol','price') 

Ưu điểm: Có ưu tiên lịch sử trong cộng đồng R, phổ biến trong suốt lõi R, và khuyến cáo của Google's R Style Guide.

Nhược điểm: đầy rẫy những ý nghĩa hướng đối tượng, và khó hiểu đối với người mới R

2. Sử dụng dấu gạch

stock_prices <- c(12.01, 10.12) 
    col_names <- c('symbol','price') 

Ưu điểm: Một quy ước chung trong nhiều langs lập trình; được ưa chuộng bởi Hadley Wickham's Style Guide và được sử dụng trong các gói ggplot2 và plyr.

Nhược điểm: Không sử dụng lịch sử bởi các lập trình viên R; là khó chịu ánh xạ tới '< -' nhà điều hành trong Emacs-Speaks-Thống kê (có thể thay đổi với 'ess-toggle-underscore').

3. Sử dụng vốn hỗn hợp (camelCase)

stockPrices <- c(12.01, 10.12) 
    colNames <- c('symbol','price') 

Ưu điểm: dường như đã áp dụng rộng rãi trong nhiều 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 trước đây (trong cơ sở R hoặc tài liệu của nó).

Cuối cùng, như thể không đủ khó hiểu, tôi phải chỉ ra rằng Hướng dẫn kiểu Google tranh 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 có vấn đề ở nhiều 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à phong cách của nó không phù hợp với chính bạn). Từ quan điểm của người dùng R, cú pháp không nhất quán làm dốc đường cong học tập của R, bằng cách nhân các cách mà một khái niệm có thể được biểu diễn (ví dụ như hàm đúc ngày tháng asDate(), as.date(), hoặc as_date()? Ngày()).

+0

Ngoài ra còn có trường hợp của MATLAB phong cách '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', v.v.) –

+5

gạch dưới giống như python, vì vậy tôi có xu hướng sử dụng dấu gạch dưới. ESS cần được khắc phục, điều đó thực sự ngớ ngẩn. –

+7

Không có gì để sửa, nó có nút bật tắt cho điều đó. Nhưng _default behaviour_ là để giải thích dấu gạch dưới dưới dạng một phím tắt cho <- tiết kiệm cho bạn một phím bấm. Vì vậy, nếu bạn xuất bản các biến với dấu gạch dưới (Hi, Hadley), bạn buộc mọi người dùng ESS nhấn _ hai lần để nhận bahaviour gốc - hoặc để tùy chỉnh thiết lập ESS của họ. tôi vẫn thích CamelCase bởi một hải lý mới. –

Trả lời

65

câu trả lời trước tốt vì vậy chỉ cần một chút để thêm ở đây:

  • gạch chân là những thực sự gây phiền nhiễu cho người dùng ESS; cho rằng ESS được sử dụng khá rộng rãi, bạn sẽ không thấy nhiều dấu gạch dưới trong mã được tác giả bởi người dùng ESS (và tập hợp đó bao gồm một nhóm R Core cũng như các tác giả CRAN, các giả định như Hadley);

  • dấu chấm cũng là điều xấu vì chúng có thể bị lẫn lộn trong công văn đơn giản; Tôi tin rằng tôi đã từng đọc nhận xét về hiệu ứng này trên một trong những danh sách R: các dấu chấm là một tạo tác lịch sử và không còn được khuyến khích nữa;

  • vì vậy chúng tôi có một người chiến thắng rõ ràng vẫn đang đứng ở vòng cuối cùng: camelCase. Tôi cũng không chắc chắn liệu tôi có thực sự đồng ý với sự khẳng định 'thiếu người đứng đầu trong cộng đồng R' hay không.

Và có: chủ nghĩa thực dụng và tính nhất quán trump dogma. Vì vậy, bất cứ điều gì làm việc và được sử dụng bởi các đồng nghiệp và đồng tác giả. Sau khi tất cả, chúng tôi vẫn có không gian trắng và niềng răng để tranh luận về :)

+5

+1 Vâng! [Nếu chỉ có đội ngũ cốt lõi sẽ đưa ra một hướng dẫn phong cách dứt khoát; – Shane

+1

Tôi chỉ có thể là sai lầm dựa trên sự thiên vị của riêng tôi đối với trường hợp hỗn hợp nhưng tôi tin rằng đó là những gì RG luôn luôn được sử dụng khi tôi đã làm việc cho anh ta. Tôi đoán những gì tốt cho RG là tốt cho tôi! – geoffjentry

+0

Geoff: Không phải là một quy tắc xấu để đi qua :) –

2

Tùy chọn này tùy thuộc vào sở thích cá nhân, nhưng tôi làm theo hướng dẫn theo phong cách của Google vì nó phù hợp với phong cách của nhóm lõi. Tôi chưa thấy một dấu gạch dưới trong một biến trong R. cơ sở

3

Như tôi đã chỉ ra ở đây:

How does the verbosity of identifiers affect the performance of a programmer?

nó có giá trị mang trong tâm trí như thế nào hiểu được tên biến của bạn là để đồng nghiệp của bạn/người dùng nếu họ không phải là người bản ngữ ...

Vì lý do đó, tôi muốn nói dấu gạch dưới và dấu chấm là tốt hơn viết hoa, nhưng khi bạn chỉ ra sự nhất quán là cần thiết trong tập lệnh của bạn.

0

Tôi có một sở thích cho mixedCapitals.

Nhưng tôi thường sử dụng dấu chấm để cho biết loại biến là:

mixedCapitals.mat là ma trận. mixedCapitals.lm là một mô hình tuyến tính. mixedCapitals.lst là một đối tượng danh sách.

v.v.

28

Gạch dưới tất cả các cách! Trái với ý kiến ​​phổ biến, có một số hàm trong cơ sở R sử dụng dấu gạch dưới. Chạy grep("^[^\\.]*$", apropos("_"), value = T) để xem tất cả.

tôi sử dụng chính thức Hadley style của mã hóa;)

+0

Thật gọn gàng! Tôi đã không nhận thức được chức năng * apropos * trước đây. Điều này trả về 10 hàm cho tôi trong R 2.9.0; Tôi hầu như không nói đó là một trường hợp hấp dẫn. Lý do cơ bản của bạn cho dấu gạch dưới khi họ rõ ràng trong một thiểu số cho R là gì? – Shane

+3

Vâng, nó là 16 trong R 2.10.0, vì vậy đó là một sự gia tăng 60% cho mỗi phiên bản;) Tôi chủ yếu thích chúng bởi vì chúng nhắc tôi về Ruby; camelCase nhắc tôi về Java. – hadley

+4

Hadley, trái tim tôi nói để hỗ trợ cho sự nổi dậy dưới đáy của bạn, nhưng đầu tôi nói để tôn trọng tiêu chuẩn cộng đồng và nói có với camelCase. (Nhưng có lẽ tự nhất quán là tất cả những vấn đề đó. – medriscoll

1

Như những người khác đã đề cập, dấu gạch dưới sẽ vít lên rất nhiều folks. Không, nó không phải là verboten nhưng nó không phải là đặc biệt phổ biến.

Sử dụng các dấu chấm làm dấu tách sẽ có một chút lông với các lớp S3 và tương tự.

Theo kinh nghiệm của tôi, có vẻ như rất nhiều muckity muck cao của R thích sử dụng camelCase, với một số sử dụng dấu chấm và một chút gạch dưới.

0

Thông thường tôi đổi tên biến của mình bằng cách sử dụng một dấu gạch dưới và một cách viết hoa hỗn hợp (camelCase). Các biến đơn giản được đặt tên bằng dấu gạch dưới, ví dụ:

PSOE_votes -> số phiếu bầu cho PSOE (nhóm chính trị của Tây Ban Nha).

PSOE_states -> Phân loại, cho biết trạng thái nơi PSOE thắng {Aragon, Andalucia, ...)

PSOE_political_force -> Categorial, cho biết vị trí giữa các nhóm chính trị của PSOE {đầu tiên, thứ hai, thứ ba)

PSOE_07 -> Liên hiệp các PSOE_votes + PSOE_states + PSOE_political_force tại 2007 (h eader - > phiếu bầu, tiểu bang, vị trí)

Nếu biến của tôi là kết quả của hàm được áp dụng trong một/hai Biến tôi sử dụng cách viết hoa hỗn hợp.

Ví dụ:

positionXstates < - xtabs (~ bang + vị trí, PSOE_07)

4

Tôi thích camelCase khi lạc đà thực sự cung cấp một cái gì đó có ý nghĩa - như datatype.

dfProfitLoss, nơi df = dataframe

hoặc

vdfMergedFiles(), nơi mà các chức năng có trong một vector và spits ra một dataframe

Trong khi tôi nghĩ _ thực sự làm tăng thêm khả năng đọc, có dường như có quá nhiều vấn đề khi sử dụng.-_ hoặc các ký tự khác trong tên. Đặc biệt là nếu bạn làm việc trên nhiều ngôn ngữ.

59

tôi đã một cuộc khảo sát về những gì đặt tên công ước đó đang thực sự được sử dụng trên cran đó đã chấp nhận vào Tạp chí R :) Dưới đây là một đồ thị tóm tắt kết quả:

enter image description here

Hóa ra (không bất ngờ có lẽ) lowerCamelCase thường được sử dụng nhất cho tên hàm và tên period.separated thường được sử dụng nhất cho các tham số. Để sử dụng UpperCamelCase, như được ủng hộ bởi Google's R style guide thực sự là hiếm, tuy nhiên, và nó là một chút lạ mà họ ủng hộ bằng cách sử dụng quy ước đặt tên đó.

Các giấy đầy đủ là ở đây:

http://journal.r-project.org/archive/2012-2/RJournal_2012-2_Baaaath.pdf

+1

Làm thế nào để tỷ lệ phần trăm không thêm lên đến 100%? – e9t

+9

@ e9t Bởi vì một tên có thể phù hợp với nhiều sự đặt tên. –

Các vấn đề liên quan