คุณปล่อยวงเล็บเข้าหรือออกใน Ruby? [ปิด]


86

ถ้าเป็นไปได้ .. คุณเว้นวงเล็บเข้าหรือออกใน Ruby?

คำตอบ:


95

จากองค์ประกอบของสไตล์ทับทิม

Ruby ช่วยให้คุณไม่ต้องใส่วงเล็บโดยทั่วไปต่อต้านการล่อลวงนี้

วงเล็บช่วยให้ติดตามโค้ดได้ง่ายขึ้น สไตล์รูบี้ทั่วไปคือการใช้งานยกเว้นในกรณีต่อไปนี้

  • เว้นวงเล็บว่างไว้เสมอ
  • วงเล็บสามารถละเว้นจากคำสั่งเดียวที่ล้อมรอบด้วยตัวคั่น ERb - เครื่องหมาย ERb ตรวจสอบให้แน่ใจว่ารหัสยังคงอ่านได้
  • บรรทัดที่เป็นคำสั่งเดียวและอาร์กิวเมนต์แบบง่ายเดียวสามารถเขียนได้โดยไม่ต้องใส่วงเล็บ โดยส่วนตัวฉันพบว่าฉันทำสิ่งนี้น้อยลงเรื่อย ๆ แต่ก็ยังอ่านได้อย่างสมบูรณ์ ฉันมักจะไม่ชอบบรรทัดเดียวในรหัสทับทิมปกติที่มีหลายอาร์กิวเมนต์และไม่มีวงเล็บ
  • ภาษาเฉพาะโดเมนที่ใช้ Ruby จำนวนมาก (เช่น Rake) ไม่ได้ใช้วงเล็บเพื่อรักษาความรู้สึกของภาษาที่เป็นธรรมชาติมากขึ้นในข้อความของพวกเขา

27

ฉันใช้ parens เป็นความคิดเห็นเพื่อช่วยในอนาคตฉัน ... ซึ่งมีแนวโน้มว่าจะมีเซลล์สมองน้อยกว่าฉันในปัจจุบัน :-)

ไม่มีอะไรจะแย่ไปกว่าการดูโค้ดที่คุณเขียนเมื่อ 2 ปีที่แล้วและเข้าใจผิดทำให้คุณทำบางอย่างผิดพลาดขณะแก้ไข

ถ้า parens จะช่วยฉันในอนาคตไม่กี่นาที (หรือหลายชั่วโมง) ในอนาคตฉันจะใส่ให้มากที่สุดเท่าที่จำเป็นเพื่อให้คำพูดชัดเจน


2
+1 "ฉันใช้ parens เป็นความคิดเห็นเพื่อช่วยอนาคตฉัน ... ซึ่งมีแนวโน้มว่าจะมีเซลล์สมองน้อยกว่าฉันในปัจจุบัน :-)" นั่นเป็นเรื่องจริงและทำไมฉันถึงทำอย่างนั้น นอกจากนี้ยังเมตตาสำหรับทุกคนที่ติดตามฉันที่ต้องใช้รหัสของฉัน ในระยะสั้นมันเป็นการบำรุงรักษา
The Tin Man

9

ฉันปล่อยมันออกมาเมื่อฉันทำของ DSL-ish เช่น t.column หรือ has_many ในราง เวลาที่เหลือโดยทั่วไปจะมีความชัดเจนและอาจเป็นช่วง


8

ฉันเดาว่าฉันทำทั้งสองอย่าง แต่ฉันเก็บไว้อย่างแน่นอนหากมันเพิ่มความสามารถในการอ่านและหลีกเลี่ยงข้อความที่ดูคลุมเครือ


8

ถ้าคุณหมายถึงการเรียกใช้ฟังก์ชันฉันจะใส่วงเล็บเสมอเพราะอ่านง่ายกว่าเสมอ หากคุณหมายถึงเงื่อนไข (ถ้าในขณะที่) ฉันใส่วงเล็บเมื่อจำเป็นเท่านั้น


2
ฉันเห็นด้วย. ตัวอย่างเช่นใน php ฉันสามารถระบุ var ได้อย่างรวดเร็วด้วยคำนำหน้า $ .. ในจาวาสคริปต์ฉันสามารถสร้างฟังก์ชันใหม่ได้โดยใช้วงเล็บ () ใน Ruby ความแตกต่างระหว่าง var หรือ func (ไม่มีวงเล็บ) ไม่ใช่เรื่องง่ายที่จะเห็นเสมอไป

7

ฉันพยายามที่จะปล่อยให้พวกเขาออกไปถ้าเป็นไปได้ ฉันคิดว่ามันทำให้โค้ดอ่านง่ายขึ้น (พูดโดยทั่วไป)


4

โดยปกติแล้วจะอ่านค่าใดได้มากกว่า

แต่ฉันมักจะใช้วงเล็บเสมอเมื่อฉันเรียกฟังก์ชันซ้อนภายในพารามิเตอร์อื่น ๆ


2

ฉันมักจะทิ้งมันไว้เมื่อทำการยืนยันเช่น assert_equal อาจเป็นการทำให้โดเมนเป็นภาษาที่เฉพาะเจาะจงเหมือน


1

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

รหัสนั้นง่ายกว่าในสายตาแม้ว่าในความคิดของฉันและฉันยังไม่พบปัญหา - หากคุณต้องการวงเล็บคุณจะรู้ล่วงหน้าก่อนที่คุณจะต้องเข้าสู่สคริปต์การดีบัก


4
"ครูของฉันบอกว่าเป็นสิ่งที่หลีกเลี่ยงไม่ได้" เป็นและยากที่จะแก้ไขข้อบกพร่อง ฉันแนะนำให้ใช้เพื่อหลีกเลี่ยงการกำหนดพารามิเตอร์ที่ไม่ชัดเจน
The Tin Man

1
ถูกโหวตให้เป็น "ง่ายกว่าในสายตา" IMO เป็นเหตุผลที่ไม่น่าเชื่อในการเว้นวงเล็บรอบอาร์กิวเมนต์ของฟังก์ชัน
Marcello Romani

2
การพูดคุยกับฝูงชนที่ไม่ใช่ parens ฉันพบปัญหานี้เมื่อวันก่อนif owner.is_a? thing //worked fine if owner.is_a? thing && x > 1 //not fine ฉันเพิ่งเรียนรู้ทับทิมมาสองสามสัปดาห์แล้วและที่ทำงานใช้อักขระจำนวนน้อยที่สุดเท่าที่จะเป็นไปได้และถ้าคุณมาจากภาษาอื่นก็มีการเรียนรู้ เส้นโค้งที่จะรู้เมื่อคุณส่งแฮชโดยนัยอาร์เรย์ของสัญลักษณ์ส่งผ่านไปยังสัญลักษณ์ไปยังฟังก์ชัน ... ฉันไม่ใช่แฟน
Mega Man

@MegaManif owner.is_a? thing and x > 1
anna328p

1
@DmitryKudriavtsev andไม่มีตัวดำเนินการแบบเดียวกับที่&&มี
Mega Man
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.