Bạn có để dấu ngoặc đơn trong hay ngoài trong Ruby không? [đóng cửa]


86

Khi có thể .. bạn để dấu ngoặc đơn trong hay ngoài trong Ruby?

Câu trả lời:


95

Từ các yếu tố của phong cách Ruby

Nói chung, Ruby cho phép bạn bỏ ngoặc, chống lại sự cám dỗ này.

Dấu ngoặc đơn giúp mã dễ theo dõi hơn. Kiểu Ruby chung là sử dụng chúng, ngoại trừ các trường hợp sau:

  • Luôn để trống dấu ngoặc đơn
  • Các dấu ngoặc đơn có thể được bỏ ra khỏi một lệnh duy nhất được bao quanh bởi các dấu phân cách ERb - các điểm đánh dấu ERb đảm bảo mã vẫn có thể đọc được
  • Một dòng là một lệnh và một đối số đơn giản có thể được viết mà không có dấu ngoặc đơn. Cá nhân tôi thấy rằng tôi làm điều này ngày càng ít đi, nhưng nó vẫn hoàn toàn có thể đọc được. Tôi có xu hướng không thích các dòng đơn trong mã ruby ​​thông thường có nhiều đối số và không có dấu ngoặc đơn.
  • Rất nhiều Ngôn ngữ dành riêng cho Miền dựa trên Ruby (chẳng hạn như Rake) không sử dụng dấu ngoặc đơn để bảo vệ ngôn ngữ tự nhiên hơn cho các câu lệnh của chúng.

27

Tôi sử dụng parens làm nhận xét để giúp tôi trong tương lai ... người có khả năng có ít tế bào não hơn tôi hiện tại :-)

Không có gì tệ hơn là nhìn vào một số mã bạn đã viết cách đây 2 năm và hiểu sai nó, do đó bạn phá vỡ một cái gì đó trong khi sửa đổi nó.

Nếu parens sẽ tiết kiệm cho tương lai của tôi vài phút (hoặc vài giờ) trong tương lai, tôi sẽ đưa vào số lượng cần thiết để làm cho tuyên bố trở nên rõ ràng.


2
+1 "Tôi sử dụng parens làm nhận xét để giúp tôi trong tương lai ... người có khả năng có ít tế bào não hơn tôi hiện tại :-)" Điều đó VẬY, và chính xác tại sao tôi lại làm như vậy. Cũng phải thương xót cho bất cứ ai theo dõi tôi, những người phải sử dụng mã của tôi. Trong ngắn hạn, đó là một điều duy trì.
the Tin Man

9

Tôi loại bỏ chúng khi tôi đang làm những thứ DSL-ish, như t.column hoặc has_many trong rails. Phần còn lại của thời gian, nó thường trở nên rõ ràng, và nó có thể là một sự tách biệt.


8

Tôi đoán tôi làm cả hai, nhưng tôi chắc chắn giữ chúng nếu nó làm tăng thêm tính dễ đọc và tránh các câu lệnh trông mơ hồ.


8

Nếu ý bạn là trong các lời gọi hàm, tôi luôn đặt dấu ngoặc đơn vì nó luôn dễ đọc hơn. Nếu bạn có nghĩa là trong các điều kiện (nếu, trong khi) tôi chỉ đặt dấu ngoặc đơn khi chúng cần thiết.


2
Tôi đồng ý. Trong php chẳng hạn, tôi có thể nhanh chóng phát hiện một var bằng tiền tố $ .. trong javascript, tôi có thể nhận lại một hàm bằng dấu ngoặc đơn (). Trong Ruby, sự khác biệt giữa var hoặc func (không có dấu ngoặc đơn) không phải lúc nào cũng dễ dàng nhận thấy.

7

Tôi cố gắng loại bỏ chúng, nếu có thể. Tôi nghĩ rằng nó làm cho mã dễ đọc hơn (nói chung).


4

Thông thường cái nào dễ đọc hơn.

Nhưng tôi luôn sử dụng dấu ngoặc đơn khi tôi lồng các lệnh gọi hàm bên trong các tham số của những cái khác


2

Tôi có xu hướng loại bỏ chúng khi thực hiện các xác nhận như khẳng định_equal. Có lẽ đó là để làm cho nó miền giống như ngôn ngữ cụ thể.


1

Nếu bạn đã lập trình lâu năm, chắc hẳn bạn sẽ rất "ngứa" việc thêm dấu ngoặc đơn và trong nhiều trường hợp có những lý do chính đáng cho việc này.

Tuy nhiên, theo ý kiến ​​của tôi, mã dễ nhìn hơn và tôi chưa gặp phải vấn đề gì - nếu bạn cần dấu ngoặc đơn, bạn sẽ biết trước nó trước khi bạn phải chạy vào tập lệnh gỡ lỗi.


4
"Giáo viên của tôi nói với tôi không thể tránh khỏi của nó". Đó là, và có thể khó gỡ lỗi. Tôi khuyên bạn nên sử dụng chúng để tránh gán tham số không rõ ràng.
the Tin Man

Bị đánh giá là "dễ nhìn hơn" IMO là một lý do tệ hại để bỏ ngoặc xung quanh các đối số của hàm.
Marcello Romani

2
nói chuyện với đám đông không phải parens, tôi đã gặp phải vấn đề này vào ngày hôm trước, if owner.is_a? thing //worked fine if owner.is_a? thing && x > 1 //not fine tôi mới chỉ học ruby ​​được vài tuần nay và nơi tôi làm việc sử dụng số lượng ký tự nhỏ nhất có thể và nếu bạn đến từ bất kỳ ngôn ngữ nào khác, hãy học đường cong để biết khi nào bạn đang truyền một hàm băm, một mảng ký hiệu, chuyển tới các ký hiệu cho một hàm ... tôi không phải là người hâm mộ.
Mega Man

@MegaMan if owner.is_a? thing and x > 1
anna328p

1
@DmitryKudriavtsev andkhông có ưu tiên điều hành tương tự mà &&
Mega Man
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.