สไตล์ที่คุณต้องการสำหรับการตั้งชื่อตัวแปรใน R คืออะไร? [ปิด]

medriscoll 12/07/2018. 8 answers, 0 views
r coding-style naming-conventions

อนุสัญญาใดสำหรับการตั้งชื่อตัวแปรและฟังก์ชั่นที่คุณชอบในรหัส R?

เท่าที่ฉันสามารถบอกได้มีการประชุมที่แตกต่างกันหลายแห่งซึ่งทั้งหมดอยู่ร่วมกันในความสามัคคีของเสียงขรม:

1. Use of period separator, e.g.

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

Pros: มีความสำคัญทางประวัติศาสตร์ในชุมชน R, แพร่หลายทั่วทั้งแกน R และแนะนำโดย R Style Guide ของ Google

Cons: อุดมไปด้วยความหมายเชิงวัตถุและสับสนกับมือใหม่ R

2. Use of underscores

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

Pros: ข้อตกลงทั่วไปในการเขียนโปรแกรมจำนวนมาก ได้รับการสนับสนุนจาก คู่มือสไตล์ของ Hadley Wickham และใช้ในแพ็คเกจ ggplot2 และ plyr

Cons: โปรแกรมเมอร์ R ไม่ได้ใช้ในอดีต; ถูกแมปอย่างน่ารำคาญกับตัวดำเนินการ '<-' ใน Emacs-Speaks-Statistics (แก้ไขได้ด้วย 'ess-toggle-underscore')

3. การใช้ตัวพิมพ์ใหญ่แบบผสม (camelCase)

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

Pros: ดูเหมือนจะมีการยอมรับอย่างกว้างขวางในชุมชนภาษาต่างๆ

Cons: มีแบบอย่างเมื่อเร็ว ๆ นี้ แต่ไม่ได้ใช้ในอดีต (ในฐาน R หรือเอกสารประกอบ)

ท้ายที่สุดราวกับว่ามันไม่ได้สับสนมากพอฉันควรจะชี้ให้เห็นว่า Google Style Guide ให้เหตุผลว่าการใช้เครื่องหมายจุดสำหรับตัวแปร แต่เป็นการใช้ตัวพิมพ์ใหญ่แบบผสมสำหรับฟังก์ชั่น

การขาดสไตล์ที่สอดคล้องกันในแพ็คเกจ R เป็นปัญหาในหลายระดับ จากมุมมองของนักพัฒนาซอฟต์แวร์ทำให้การบำรุงรักษาและการขยายโค้ดของผู้อื่นนั้นยาก (โดยเฉพาะสไตล์ที่ไม่สอดคล้องกับของคุณเอง) จากมุมมองของผู้ใช้ R ไวยากรณ์ที่ไม่สอดคล้องกันจะทำให้ช่วงการเรียนรู้ของ R เพิ่มขึ้นโดยการคูณวิธีที่แนวคิดอาจแสดง (เช่นฟังก์ชันการส่งวันที่นั้นเป็น asDate (), as.date () หรือ as_date () หรือไม่ วันที่ ())

8 Answers


Dirk Eddelbuettel 12/22/2009.

คำตอบที่ดีก่อนหน้านี้เพิ่มเพียงเล็กน้อยที่นี่:

  • ขีดล่างนั้นน่ารำคาญสำหรับผู้ใช้ ESS เนื่องจาก ESS นั้นใช้กันอย่างแพร่หลายคุณจะไม่เห็นขีดเส้นใต้จำนวนมากในรหัสที่เขียนโดยผู้ใช้ ESS (และชุดดังกล่าวประกอบด้วย R Core จำนวนมากรวมถึงผู้เขียน CRAN, การออกกำลังกายเช่น Hadley อย่างไรก็ตาม;

  • จุดก็ชั่วเช่นกันเพราะพวกเขาสามารถผสมกันในวิธีการจัดส่งง่าย ๆ ; ฉันเชื่อว่าฉันเคยอ่านความคิดเห็นเกี่ยวกับผลกระทบนี้ในรายการ R อย่างใดอย่างหนึ่ง: จุดเป็นสิ่งประดิษฐ์ทางประวัติศาสตร์และไม่ได้รับการสนับสนุนอีกต่อไป

  • ดังนั้นเราจึงมีผู้ชนะที่ชัดเจนยังคงยืนอยู่ในรอบสุดท้าย: camelCase ฉันก็ไม่แน่ใจเช่นกันว่าฉันเห็นด้วยกับคำยืนยันของ 'การขาดความเชื่อมั่นในชุมชน R' หรือไม่

และใช่: ลัทธิปฏิบัตินิยมและความมั่นคงของคนที่กล้าหาญ ดังนั้นสิ่งที่ใช้ได้ผลและถูกใช้โดยเพื่อนร่วมงานและผู้ร่วมเขียน ท้ายที่สุดเรายังมีพื้นที่สีขาวและเครื่องมือจัดฟันเพื่อโต้แย้งเกี่ยวกับ :)


Rasmus Bååth 02/27/2017.

ฉันสำรวจว่าอนุสัญญาการตั้งชื่ออะไรที่ใช้จริงบน CRAN ที่ได้รับการยอมรับใน R Journal :) นี่คือกราฟสรุปผล:

ป้อนคำอธิบายรูปภาพที่นี่

ปรากฎ (อาจไม่น่าประหลาดใจ) ที่ lowerCamelCase มักใช้สำหรับชื่อฟังก์ชั่นและ period.separated ชื่อส่วนใหญ่มักใช้สำหรับพารามิเตอร์ ในการใช้ UpperCamelCase ดังที่ได้รับการสนับสนุนจาก คู่มือสไตล์ R ของ Google นั้นหายากมากและเป็นเรื่องแปลกที่พวกเขาสนับสนุนโดยใช้หลักการตั้งชื่อนั้น

บทความฉบับเต็มอยู่ที่นี่:

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


hadley 09/09/2015.

ขีดเส้นใต้ตลอดทาง! ตรงกันข้ามกับความคิดเห็นที่ได้รับความนิยมมีฟังก์ชั่นจำนวนมากในฐาน R ที่ใช้ขีดล่าง เรียกใช้ grep("^[^\\.]*$", apropos("_"), value = T) เพื่อดูทั้งหมด

ฉันใช้การเข้ารหัส แบบสไตล์ Hadley อย่างเป็นทางการ;)


Robert 01/08/2010.

ฉันชอบ camelCase เมื่ออูฐให้บางสิ่งที่มีความหมาย - เหมือนประเภทข้อมูล

dfProfitLoss โดยที่ df = dataframe

หรือ

vdfMergedFiles () ซึ่งฟังก์ชั่นใช้ในเวกเตอร์และแยกออก dataframe

ในขณะที่ฉันคิดว่า _ เพิ่มความสามารถในการอ่านได้จริงๆดูเหมือนว่าจะมีปัญหามากมายเกี่ยวกับการใช้.-_ หรืออักขระอื่น ๆ ในชื่อ โดยเฉพาะถ้าคุณทำงานหลายภาษา


Shane 12/22/2009.

สิ่งนี้เกิดขึ้นกับความชอบส่วนบุคคล แต่ฉันทำตามคำแนะนำสไตล์ Google เพราะมันสอดคล้องกับสไตล์ของทีมหลัก ฉันยังไม่เห็นขีดล่างในตัวแปรในฐาน R


ตามที่ฉันชี้ไปที่นี่:

การใช้คำฟุ่มเฟื่อยของตัวระบุส่งผลกระทบต่อประสิทธิภาพของโปรแกรมเมอร์อย่างไร

เป็นเรื่องที่ควรคำนึงถึงว่าชื่อตัวแปรของคุณเข้าใจได้อย่างไรกับเพื่อนร่วมงาน / ผู้ใช้ของคุณหากพวกเขาไม่ใช่เจ้าของภาษา ...

ด้วยเหตุนี้ฉันจึงบอกว่าขีดล่างและช่วงเวลานั้นดีกว่าการใช้อักษรตัวพิมพ์ใหญ่ แต่เมื่อคุณชี้ให้เห็นว่าความมั่นคงเป็นสิ่งสำคัญในสคริปต์ของคุณ


geoffjentry 12/23/2009.

ตามที่คนอื่น ๆ ได้กล่าวถึงขีดเส้นใต้จะทำให้คนจำนวนมากขึ้น ไม่มันไม่ใช่ verboten แต่ก็ไม่ธรรมดาเหมือนกัน

การใช้จุดเป็นตัวคั่นทำให้มีขนดกเล็กน้อยกับคลาส S3 และสิ่งที่คล้ายกัน

จากประสบการณ์ของฉันดูเหมือนว่า muckity muckity สูงของ R ชอบการใช้งานของ camelCase ด้วยการใช้งาน dot และการใช้ขีดล่าง


Jesse 12/22/2009.

ฉันมีความชอบสำหรับ MixedCapitals

แต่ฉันมักจะใช้จุดเพื่อระบุประเภทของตัวแปร:

MixedCapitals.mat เป็นเมทริกซ์ MixedCapitals.lm เป็นโมเดลเชิงเส้น MixedCapitals.lst เป็นวัตถุรายการ

และอื่น ๆ


HighResolutionMusic.com - Download Hi-Res Songs

1 AJR

Birthday Party flac

AJR. 2019. Writer: Adam Met;Jack Met;Ryan Met;Peter Ivers;David Lynch.
2 Loote

Your Side Of The Bed flac

Loote. 2018. Writer: ​Jesse Saint John;Jackson Foote;Emma Lov Block.
3 AJR

100 Bad Days flac

AJR. 2019. Writer: Jack Met;Adam Met;Ryan Met.
4 Joe Jonas

Longer Than I Thought flac

Joe Jonas. 2018. Writer: Patrick Nissley;Jackson Foote;Dave Katz.
5 Loote

Out Of My Head flac

Loote. 2018. Writer: Emma Lov Block;Michael Pollack;Jeremy Dussolliet;Jackson Foote.
6 Iselin Solheim

Anyone Out There flac

Iselin Solheim. 2019. Writer: Iselin Solheim;Max Grahn.
7 Loote

Wish I Never Met You flac

Loote. 2018. Writer: Jackson Foote;Alex Peter Koste;Jeremy Dussolliet;Emma Lov Block.
8 Kim Petras

Heart To Break flac

Kim Petras. 2018. Writer: Cirkut;Aaron Joseph;Dr. Luke;Jacob Kasher;Kim Petras.
9 A L E X

Out On The Trampoline At Night flac

A L E X. 2018. Writer: A L E X.
10 A L E X

I Want To Hold Your Hand flac

A L E X. 2018. Writer: A L E X.
11 A L E X

Field flac

A L E X. 2018. Writer: A L E X.
12 A L E X

Save Me flac

A L E X. 2018. Writer: A L E X.
13 Devin

Summer Lover flac

Devin. 2019. Writer: Tommy Lee James;Stuart Crichton;Oliver Heldens;Nile Rodgers;Devin Guisande.
14 A L E X

9 To 5 flac

A L E X. 2018. Writer: A L E X.
15 A L E X

Skirt flac

A L E X. 2018. Writer: A L E X.
16 Florian Picasso

Midnight Sun (Extended Version) flac

Florian Picasso. 2019.
17 Florian Picasso

Midnight Sun flac

Florian Picasso. 2019.
18 21 Savage

Enzo flac

21 Savage. 2019. Writer: YungLunchBox;Sheck Wes;Offset;Gucci Mane;21 Savage;DJ Snake.
19 Tales Of Ratatösk

Battle Of The Doomed Gods 320kbps

Tales Of Ratatösk. 2019.
20 Tales Of Ratatösk

Andro 320kbps

Tales Of Ratatösk. 2019.

Language

Popular Tags