Menutup tanda kurung pada jalurnya sendiri tidak dapat diterima? [Tutup]


8

Saya telah menggunakan Emacs selama beberapa tahun sekarang, tetapi saya baru-baru ini tersandung standar pengkodean . Di sana dinyatakan:

Jangan biasakan memasang tanda kurung dekat sendiri; Pemrogram yang lalai menemukan hal yang membingungkan ini.

Ini adalah kebiasaan yang saya bangun, karena saya menemukan kode lebih mudah dibaca. Saya melihat gaya campuran dalam paket yang dikirimkan bersama Emacs. Pertanyaan saya adalah apakah kebingungan ini umum bagi kebanyakan programmer elisp.

Sunting: Melihat kode saya, saya tidak sepenuhnya mengikuti ini. Maka kodenya akan sangat mengerikan. Sebagian besar defun, let, if dan sebagainya. Tapi, sepertinya itu bertentangan dengan keinginan, jadi saya mungkin harus berhenti melakukan ini. Sorakan untuk input.

(Pendapat Borderline berdasarkan, tetapi tampaknya terkait dengan penutupan kawat gigi di C ++, di mana seharusnya tidak kontroversial untuk menyatakan bahwa mereka umumnya harus pada jalur mereka sendiri).


4
Tidak dapat diterima, hanya benar-benar menyebalkan :)
abo-abo

4
Anggap saja seperti bahasa spasi, kecuali tanda kurung menghapus kemungkinan ambiguitas - dalam bahasa yang diformat dengan baik Anda harus dapat membacanya tanpa melihat tanda kurung
Squidly

1
Saya ingin tahu paket mana yang dikirim dengan emacs tidak mematuhi ini.
Malabarba

3
@ Malabarba Pencarian dengan agsumber lisp memberi saya 3414 kandidat untuk ^\s*?\)$regex yang terdiri dari 468 file yang milik sekitar 200 paket?
wasamasa

1
@ adalah ide bagus. Saya menempatkan itu melalui beberapa pipa lagi, dan mendapat bahwa 90% dari .elfile memiliki kurang dari 10 contoh ini. Berarti file-file ini tidak mengadopsinya sebagai gaya, mereka hanya menggunakannya di beberapa lokasi yang nyaman (seperti untuk menyelesaikan fungsi yang sangat panjang).
Malabarba

Jawaban:


6

Nah sebuah jawaban singkat adalah "tidak perlu". Karena Emacs dapat mem-parsing ekspresi s dari LISP, ia tahu persis di mana form menyeimbangkan dan dapat indentasi ulang kode dengan benar. Dalam hal ini, memindahkan braket ke jalurnya sendiri hanya membuang satu baris ruang tambahan dan pada saat yang sama tidak-idomatis dan menggelegar bagi programmer LISP lain yang terbiasa dengan gaya kanonik. Seperti yang telah disebutkan dalam komentar, ini tidak menghalangi Anda untuk menggunakan spasi putih vertikal untuk memisahkan potongan kode secara visual.

Dalam prakteknya banyak Emacs menggunakan programmer LISP menggunakan berbagai isyarat visual tambahan seperti show-paren-mode yang membantu menavigasi melalui sarang kurung tutup padat. Para insinyur yang telah memasukkan modul-modul seperti paredit dan smart-parens ke dalam siklus pengeditan mereka telah menjadi satu dengan AST dan hanya memanipulasi strukturnya secara langsung sehingga ekspresi selalu seimbang dan lengkap.


Tentu saja saya memiliki pencocokan tanda kurung dan sebagainya, tetapi saya pikir ruang vertikal memiliki tempat dalam semua kode, dan itulah yang dibawa oleh kebiasaan yang tidak direkomendasikan ini. Tetapi gaya umum selalu baik, untuk apa pun publik saya akan menggunakan cara yang disarankan. Tetapi untuk memutarnya, berapa nilai yang diberikan oleh tanda kurung pada akhirnya :).
Nama pengguna yang bermakna

4
Anda selalu dapat menambahkan ruang vertikal; tidak ada yang mengatakan Anda harus smoosh setiap baris ke yang berikutnya. Terkadang ruang vertikal bermanfaat; terkadang tidak. Menempatkan tanda kurung di akhir baris memungkinkan Anda memilih kapan untuk menambahkan ruang vertikal dan kapan tidak. Orang tua pada garis baru memaksa ruang vertikal, dan banyak lagi.
Zck

@ zck: Saya sudah memperbarui jawaban untuk menyebutkan maksud Anda. Terima kasih.
stsquad

Poin bagus. Saya sudah mulai mengubah kode saya agar sesuai dengan standar. Tidak banyak perbedaan, jadi harus cepat terbiasa. Kira saya hanya merasa tanda kurung harus digunakan untuk sesuatu, sedangkan kebanyakan yang lain tampaknya cukup banyak mengabaikannya.
Nama pengguna yang bermakna

6

Panduan Gaya Lisp Riastradh menguraikan sedikit lebih banyak tentang topik khusus ini. Walaupun ia umumnya tidak menyarankan untuk menempatkan tanda kurung penutup pada baris mereka sendiri, ia mengenali beberapa pengecualian, seperti baris sebelumnya dengan paren penutup sedang dikomentari dan daftar yang sangat panjang yang jika tidak akan terus-menerus mengacaukan perbedaan ketika menambahkan elemen baru di awal atau akhir mereka. .


1

Saya sudah menulis Elisp selama sekitar 2-3 tahun sekarang. Pada awalnya, saya melakukan hal menggantung parens, tetapi karena saya telah menemukan aturan yang Anda sebutkan, saya mulai melakukannya sendiri. Dan saya dapat mengatakan sekarang bahwa lebih mudah untuk membaca kode ketika itu ditata dengan benar.

Saya bahkan menulis beberapa kode prettifying LISP di sini: lispy-tab .

Dan, tentu saja, saya miliki show-paren-modesepanjang waktu.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.