Apakah Anda membiarkan tanda kurung di dalam atau di luar di Ruby? [Tutup]

Jawaban:

95

Dari Elements of Ruby Style

Ruby memungkinkan Anda untuk meninggalkan tanda kurung, secara umum, tahan godaan ini.

Tanda kurung membuat kode lebih mudah diikuti. Gaya umum Ruby digunakan, kecuali dalam kasus berikut:

  • Selalu biarkan tanda kurung kosong
  • Tanda kurung dapat ditinggalkan dari satu perintah yang dikelilingi oleh pembatas ERb - penanda ERb memastikan kode masih dapat dibaca
  • Baris yang merupakan satu perintah dan satu argumen sederhana dapat ditulis tanpa tanda kurung. Secara pribadi, saya menemukan bahwa saya melakukan ini semakin jarang, tetapi masih dapat dibaca dengan sempurna. Saya cenderung tidak menyukai satu baris dalam kode ruby ​​biasa yang memiliki banyak argumen dan tidak ada tanda kurung.
  • Banyak Bahasa Khusus Domain berbasis Ruby (seperti Rake) tidak menggunakan tanda kurung untuk mempertahankan nuansa bahasa yang lebih natural pada pernyataan mereka.
Jason Navarrete
sumber
27

Saya menggunakan parens sebagai komentar untuk membantu saya di masa depan ... yang cenderung memiliki lebih sedikit sel otak daripada saya saat ini :-)

Tidak ada yang lebih buruk daripada melihat beberapa kode yang Anda tulis 2 tahun lalu dan salah paham, sehingga Anda merusak sesuatu saat memodifikasinya.

Jika parens akan menyelamatkan masa depan saya beberapa menit (atau jam) di masa depan, saya akan memasukkan sebanyak yang diperlukan untuk membuat pernyataan itu jelas.

John
sumber
2
+1 "Saya menggunakan parens sebagai komentar untuk membantu saya di masa depan ... yang kemungkinan besar memiliki lebih sedikit sel otak daripada saya saat ini :-)" Itu BEGITU benar, dan mengapa saya melakukannya. Ini juga menjadi belas kasihan bagi siapa pun yang mengikuti saya yang harus menggunakan kode saya. Singkatnya, ini adalah masalah perawatan.
Manusia Timah
9

Saya meninggalkannya saat saya melakukan hal-hal DSL, seperti t.column atau has_many in rails. Sisa waktu, umumnya bermuara pada kejelasan, dan itu mungkin perpecahan yang merata.

Matt Burke
sumber
8

Saya rasa saya melakukan keduanya, tetapi saya pasti menyimpannya jika itu menambah keterbacaan dan menghindari pernyataan yang terlihat ambigu.

Eli
sumber
8

Jika yang Anda maksud dalam pemanggilan fungsi, saya selalu memasukkan tanda kurung karena selalu lebih mudah dibaca. Jika yang Anda maksud dalam kondisi (jika, sementara), saya hanya meletakkan tanda kurung jika diperlukan.

tikar
sumber
2
Saya setuju. Dalam php misalnya saya dapat dengan cepat melihat var dengan $ prefix .. di javascript saya dapat merekonstruksi sebuah fungsi dengan tanda kurung (). Di Ruby, perbedaan antara var atau func (tanpa tanda kurung) tidak selalu mudah dilihat.
7

Saya mencoba untuk meninggalkan mereka, jika memungkinkan. Saya pikir itu membuat kode lebih mudah dibaca (secara umum).

mipadi
sumber
4

Mana yang lebih mudah dibaca biasanya.

Tapi saya selalu menggunakan tanda kurung ketika saya melakukan pemanggilan fungsi bersarang di dalam parameter yang lain

Gareth
sumber
2

Saya cenderung mengabaikannya saat melakukan pernyataan seperti assert_equal. Mungkin untuk membuatnya seperti bahasa khusus domain.

Andrew Grimm
sumber
1

Jika Anda telah memprogram untuk waktu yang lama, Anda mungkin akan merasa "gatal" untuk menambahkan tanda kurung, dan dalam banyak kasus ada alasan bagus untuk ini.

Kode ini lebih mudah dilihat meskipun menurut saya, dan saya belum mengalami masalah - jika Anda akan membutuhkan tanda kurung, Anda akan mengetahuinya sebelumnya sebelum Anda harus menjalankan skrip debugging.

boulder_ruby
sumber
4
"Guru saya memberi tahu saya hal itu tidak bisa dihindari". Memang, dan mungkin sulit untuk di-debug. Saya merekomendasikan menggunakannya untuk menghindari penetapan parameter yang ambigu.
Tin Man
1
Tidak disukai sebagai "lebih enak dipandang" adalah alasan yang buruk untuk mengabaikan tanda kurung di sekitar argumen fungsi.
Marcello Romani
2
berbicara dengan orang-orang non-parens saya mengalami masalah ini beberapa hari yang lalu if owner.is_a? thing //worked fine if owner.is_a? thing && x > 1 //not fine saya baru belajar ruby ​​selama beberapa minggu sekarang dan di mana saya bekerja menggunakan jumlah karakter sekecil mungkin dan jika Anda berasal dari bahasa lain, ada pembelajaran kurva untuk mengetahui saat Anda mengirimkan hash yang implisit, serangkaian simbol, meneruskan ke simbol ke suatu fungsi ... saya bukan penggemar.
Mega Man
@MegaManif owner.is_a? thing and x > 1
anna328p
1
@DmitryKudriavtsev andtidak memiliki prioritas operator yang sama yang &&memiliki
Mega Man