Panduan Gaya Pengodean untuk aplikasi node.js? [Tutup]

130

Apakah ada (atau beberapa) panduan gaya pengkodean untuk node.js? Jika tidak, apa gaya yang muncul yang digunakan oleh proyek simpul open-source teratas?

Saya mencari panduan (atau beberapa panduan) di sepanjang garis PEP 8 , Panduan Gaya Coding kanonik untuk Python. Saya telah melihat berbagai panduan JavaScript yang tidak perlu ditautkan di sini (kebanyakan tua dan ditargetkan pada JavaScript sisi klien). Saya menemukan satu panduan gaya node.js yang menarik .

Panduan gaya pengkodean, atau konvensi pengkodean, harus mencakup (tetapi tidak terbatas pada):

  • Tata letak kode: indentasi (2 spasi, 4 spasi, tab, ...), baris baru, pemisah baris, dll.
  • Spasi putih, misalnya, "function (arg)" vs. "function (arg)"
  • Titik koma atau tidak ada titik koma, deklarasi var, ...
  • Memberi nama, misalnya, do_this () vs. doThis (), var_name vs. varName, ...
  • node.js dan idiom JavaScript, misalnya, == vs. ===, arg pertama callback adalah objek kesalahan, ...
  • Komentar dan dokumentasi
  • Alat pendamping, seperti pemeriksa serat, kerangka uji unit, ...

Topik ini jelas sangat subyektif, tetapi saya pikir ini merupakan langkah penting dari komunitas untuk membangun gaya pengkodean yang umum dan diterima secara luas dalam proses menjadi dewasa. Juga, ini bukan hanya tentang rasa. Secara khusus, aturan seperti "use === bukannya ==" memiliki pengaruh langsung pada kualitas kode.

alienhard
sumber
saya benar-benar tergantung pada "kerangka kerja" yang Anda gunakan (jika ada), misalnya Anda dapat memeriksa spludo.com/source/coding-standards namun orang lain mungkin mempertimbangkan pendekatan yang sedikit berbeda
Poelinca Dorin
4
"Apakah ada yang memiliki seperangkat panduan gaya yang baik" mungkin atau mungkin tidak subjektif, tetapi "Apa gaya yang muncul" tentu saja. Anda sudah menemukan panduan Felix, yang tentu saja saya tidak setuju dengan aspek (dalam beberapa kasus sangat) dan setuju dengan aspek lain dari. Dan itu masalahnya. Sangat, sangat cepat ia masuk ke "Tidak, gaya yang saya lihat emerge menggunakan tab!" "Tidak, gaya saya melihat muncul menggunakan empat ruang!" "Tidak, gaya saya melihat muncul menggunakan dua ruang!" Ketika, tentu saja, apa yang sebenarnya orang maksudkan adalah "gaya yang saya sukai", bukan "gaya yang saya lihat muncul".
TJ Crowder
2
@TJ Croweder Gaya yang saya lihat emerge tidak menggunakan spasi!
Raynos
+1 pertanyaan yang luar biasa. Saya berharap saya memiliki tautan ini sejak lama.
Bryan Downing
Pertanyaan subyektif.
Niels Abildgaard

Jawaban:

120

Saya akan meninjau standar pengkodean diperiksa oleh JSLint atau melihat penulis standar pengkodean NPM (Isaac Shlueter) .

Anda juga bisa melihat gaya yang digunakan oleh Node.JS coders terkenal:

Saya akan melemparkan milik saya di sana untuk mengukur baik;)

Sunting: Saran dari @alienhard

IMO ada beberapa aturan emas yang harus Anda ikuti:

  • Jangan pernah gunakan withataueval
  • Gunakan ===lebih==
  • Selalu mendeklarasikan variabel Anda dengan vardalam cakupan yang sesuai - jangan mundur ke lingkup global
  • Bungkus aplikasi Anda dalam penutupan (function(){})()jika Anda berencana merilis kode yang menjalankan sisi server maupun di browser
  • Callback harus mengambil errsebagai argumen pertama dan jika mereka sendiri mengambil callback sebagai argumen, itu harus menjadi yang terakhir, misalnyacallback(err, param1, param2, callback)

Lekukan, jarak antara kurung kurawal dan kata kunci dan penempatan titik koma adalah masalah pilihan.

chriso
sumber
2
Terima kasih atas jawabannya. Saya bertanya-tanya mengapa Anda tidak menyebut Ryan;). Tapi saya pikir, dari wiki simpul repo resmi, mereka mengikuti panduan gaya JavaScript Google . Saya tidak tahu itu sebelumnya ...
alienhard
15

Ada standar baru di kota.

Gunakan Gaya Standar .

js-standar-gaya

perkasa
sumber
1
Saya tidak tahu mengapa ini hanya memiliki 3 upvotes ...
Luc
4
@ Luc mungkin karena aturan "No titik koma". Sepertinya pilihan aneh untuk sesuatu yang disebut gaya "Standar".
Daniel Yankowsky
Tidak ada titik koma bukan ide yang baik. Ini akan merusak beberapa minifikasi.
denov
Ini standardpaket tidak seperti titik koma. Jika Anda suka titik koma ada semistandar
yesnik
10

Anda dapat mempelajari banyak praktik gaya pengkodean yang baik dari panduan JavaScript berorientasi sisi klien (kebanyakan dari mereka berlaku juga untuk node.js secara umum karena perbedaan antara sisi klien dan server sebagian besar di perpustakaan dan bukan dalam bahasa itu sendiri). Misalnya buku Pola Javascript mendedikasikan untuk topik ini beberapa bagian dari Bab 2 . Juga situs web Douglas Crockford , buku dan video adalah harus melihat bahan untuk mengadopsi gaya pengkodean spesifik JavaScript dan praktik terbaik yang akan saya katakan.

yojimbo87
sumber
3
+1 ke buku Douglas Crockford "JavaScript: The Good Parts". Ada banyak sekali informasi dalam buku ringkas / kecil - banyak dibaca, tapi salah satu buku terbaik yang pernah saya baca.
Alex KeySmith
7

Saat menggunakan simpul dari terminal, kode sumber Anda berguna untuk menggunakan spasi untuk indentasi. Kalau tidak, tanda "kesalahan di sini" tidak akan berbaris.

Dengan tab:

        var preps = files.map(function(f) { 
            ^
TypeError: Cannot call method 'map' of null

Dengan spasi:

        var preps = files.map(function(f) { 
                          ^
TypeError: Cannot call method 'map' of null

Ini mungkin hanya masalah Mac, tapi saya kira tidak.

Daniel Yankowsky
sumber
OP meminta panduan gaya. Bukan tip khusus.
mightyiam
@mightyiam Benar, tetapi aturan lekukan adalah bagian dari hampir setiap panduan gaya. Mungkin maksud saya dapat membantu OP mengevaluasi beberapa panduan gaya yang akan ditautkan oleh orang lain, atau dapat membantu dia mengembangkan panduan gayanya sendiri.
Daniel Yankowsky
6

Sudah lama sejak saya mengajukan pertanyaan ini ... dan sementara itu saya telah menemukan panduan JavaScript yang luar biasa ini:

Prinsip-Prinsip Penulisan yang Konsisten, JavaScript Idiomatik

https://github.com/rwldrn/idiomatic.js/

alienhard
sumber
2

Untuk Coffee-Script, di mana indentasi buruk berarti kesalahan kompilasi

menggunakan

:set tabstop=2
:set shiftwidth=2
:set expandtab

proyek kopi populer zombie,, brunchmenggunakan pengaturan ini untuk lekukan.

Edit:

Sebenarnya, gunakan ini saja! https://github.com/paulmillr/code-style-guides (salah satu kontributor utama brunch)

Quang Van
sumber