Three.js: Meninjau kembali panduan gaya?

Dibuat pada 19 Jul 2018  ·  16Komentar  ·  Sumber: mrdoob/three.js

Saya yakin ini membuka sekaleng cacing tetapi [panduan gaya] tampaknya sedikit ketinggalan zaman dan saya ingin menyarankan 2 perubahan

lebih suka const dan let var ?

Saya tidak tahu mengapa var lebih disukai (diberitahu untuk mengubah ke var dalam PR baru-baru ini). Dugaan saya adalah karena di situlah awalnya dan karena const dan let adalah baru. Tapi sekarang basis kode menggunakan modul ES5 sepertinya alasan untuk mempertahankan var sudah lama hilang. Karena baris import , agar kode berfungsi pada browser yang hanya mendukung var kode harus dijalankan melalui transpiler. Transpiler yang sama sudah/akan mengonversi const dan let menjadi var .

Selanjutnya, ada tujuan positif yang konkret untuk menggunakan const dan let lebih dari var . Keduanya dicakupkan ke kurung kurawal alih-alih ruang lingkup fungsi. Tidak membuat variabel global tidak seperti var . Tentu, sebagian besar kode menggunakan var sekarang (walaupun IIRC eslint dapat memperbaikinya secara otomatis). Mengubah linter menjadi memerlukan const dan let dan perlahan mengubah kode lama akan mencegah lebih banyak kesalahan dan kebocoran. Juga dengan const dan let digunakan di mana saja, memungkinkan eslint memeriksa lebih banyak variabel tidak terdefinisi yang setidaknya bagi saya sebagai bantuan besar.

Ada suatu masa ketika var lebih cepat tetapi waktu itu sudah lama berlalu.

Apakah sudah waktunya untuk berhenti menggunakan var ?

izinkan tanda koma dalam array dan objek multiline

Ini mungkin preferensi pribadi oleh Mr. Doob tapi tebakan saya lebih dari yang tersisa dari hari-hari IE. IE tidak mendukung tanda koma tetapi sekarang transpiling terjadi, tanda koma dihapus oleh transpiler untuk kompatibilitas IE. Untuk devs trailing koma adalah kemenangan karena menghasilkan lebih sedikit kesalahan. Kesalahan yang biasanya tertangkap tetapi kesalahan yang sering membutuhkan setidaknya satu iterasi untuk ditangkap, berjalan di browser dan melihat kesalahan sintaks kemudian kembali dan mengedit koma. Setidaknya dalam pengalaman saya trailing koma menghindari masalah itu.

Dengan membuntuti koma dalam array dan objek multiline yang saya maksud misalnya

 const sizes = [
     100,
     200,
     300,
 ];

dan

 const options = {
    width: 100,
    height: 200,
    depth: 300,
};

Dengan koma tambahan, menambahkan atau menghapus baris hanya membutuhkan satu baris. Dengan tanda koma itu berarti selalu harus menyadari koma terakhir dan menghapusnya atau menambahkannya.

Tentu saja apa pun yang diputuskan baik-baik saja, saya akan mengikuti panduan untuk PR. Saya hanya berpikir saya akan bertanya ketika kode beralih ke modul ES5 jika sudah waktunya untuk mengunjungi kembali beberapa panduan gaya (perhatikan bagian var sebenarnya tidak ada dalam panduan gaya.)

Suggestion

Komentar yang paling membantu

Penerjemah JS menghapus koma itu hari ini?

Semua browser baik-baik saja dengan koma itu dalam array dan objek selama> 10 tahun kecuali IE

Biarkan saya menambahkan daripada melihatnya sebagai hal yang aneh POV lain adalah bahwa sintaks sebenarnya koma diperlukan itu hanya browser memberi Anda istirahat dan tidak memerlukan yang terakhir. Keanehan seseorang adalah kecantikan orang lain. Saya menemukan konsistensi setiap baris yang sama lebih menyenangkan secara pribadi daripada baris terakhir yang berbeda. Tentu saja itu adalah preferensi pribadi, saya hanya membahasnya dengan cara lain untuk melihat sesuatu.

untuk perbedaan saya menemukan perbandingan ini secara online

tidak ada tanda koma diff menambahkan baris

trailing koma diff menambahkan baris

Semua 16 komentar

Ada saat ketika var lebih cepat tetapi waktu itu sudah lama berlalu.

Apa yang Anda mendasarkan ini? IIRC terakhir kali kami menguji ini, tidak ada perbedaan untuk const tetapi let agak lebih lambat. Akan lebih baik untuk melihat beberapa tes yang diperbarui tentang ini.

izinkan tanda koma dalam array dan objek multiline

Pasti setuju dengan perubahan ini, jika tidak ada masalah dengan IE (kami masih ingin mendukung setidaknya IE 10 dan 11 kan?).

Ada saat ketika var lebih cepat tetapi waktu itu sudah lama berlalu.

Apa yang Anda mendasarkan ini? IIRC terakhir kali kami menguji ini, tidak ada perbedaan untuk const tetapi let agak lebih lambat. Akan lebih baik untuk melihat beberapa tes yang diperbarui tentang ini.

Ya, beberapa angka akan membantu keputusan ini.

izinkan tanda koma dalam array dan objek multiline

Dengan membuntuti koma dalam array dan objek multiline yang saya maksud misalnya

const sizes = [
    100,
    200,
    300,
];

Otak saya membacanya seperti ini:

 const sizes = [
     100,
     200,
     300, undefined
 ];

Penerjemah JS menghapus koma itu hari ini?

Saya pribadi tidak memilih untuk mengizinkan tanda koma dalam array multiline karena saya merasa tidak biasa untuk membaca juga.

Bagi saya, tujuan membubuhkan koma adalah untuk mempercepat penambahan dan penghapusan, serta menyusun ulang dengan memotong/menempel. Tidak perlu khawatir jika Anda hanya memotong item terakhir atau tidak, setiap baris adalah sama. Untuk melihat undefined , mudah untuk menghindarinya jika Anda tahu hanya ada satu item per baris - dan dalam kasus di mana array berada pada satu baris seperti [1, 2, 3, 4, 5] Anda tidak akan menambahkan tanda koma.

Di sisi lain, saya pikir itu tidak penting. Beralih ke const / let adalah masalah penting di sini.

... tapi sekarang transpiling sedang terjadi ...

Kami tidak berubah, kan? Rollup hanya menggantikan sintaks impor/ekspor ES6 sambil membiarkan yang lainnya, kecuali jika Anda menambahkan plugin seperti rollup-plugin-buble . Tetapi let / const tetap didukung di IE11.

Tanda koma juga memiliki tujuan yang jauh lebih besar daripada sekadar "kemudahan penggunaan". Dalam proyek yang lebih besar di mana banyak orang berkontribusi, akan berguna untuk menggunakan hal-hal seperti git blame untuk mencari tahu siapa yang bertanggung jawab atas bagian kode apa.

Jadi, nyatakan yang sudah jelas di sini: Jika ada hal-hal yang terdaftar di beberapa baris yang ditambahkan oleh @mrdoob , dan nanti saya akan menambahkan baris di sana, nama saya akan ditampilkan pada baris kode terakhir yang tidak saya tulis.

Saya pribadi menentang penggunaan tanda koma untuk alasan yang sama persis seperti yang dikatakan orang-orang sebelum saya, tetapi saya melihat manfaatnya dan saya mulai terbiasa sekarang karena kami juga menerapkan ini di kantor sejak tahun ini.

Penerjemah JS menghapus koma itu hari ini?

Ya.

Mengenai penggunaan let vs var :

Perbedaan antara let dan var tidak masalah lagi hari ini jika menyangkut kinerja. V8 dan Spidermonkey (Firefox) memiliki pengoptimalan hebat akhir-akhir ini yang bekerja dengan sangat baik.

Lihat posting ini untuk elaborasi (pastikan untuk menjalankan cuplikan aktual untuk melihat bahwa perbedaannya cukup dapat diabaikan sekarang): https://stackoverflow.com/questions/37792934/why-is-let-slower-than-var- dalam-a-untuk-loop-in-nodejs

Jawaban yang diterima dari pertanyaan SO itu juga menunjukkan perbedaan antara var dan let dari perspektif fungsional, karena keduanya memiliki _ sangat_ arti dan kasus penggunaan yang berbeda jika tidak jelas kepada siapa pun.

Penggunaan const untuk variabel yang tidak pernah berubah adalah hal yang mudah. Jika mesin javascript dapat melihat bahwa suatu variabel dideklarasikan dengan const , ia mengetahui bahwa nilainya tidak akan pernah berubah lagi, sehingga dapat dioptimalkan secara besar-besaran.

Hanya 2 sen saya.

Sebagai referensi:

Tanda koma adalah salah satu pola js terbaik yang pernah saya lihat dan membuat perbedaan jauh lebih mudah dibaca.

Penerjemah JS menghapus koma itu hari ini?

Semua browser baik-baik saja dengan koma itu dalam array dan objek selama> 10 tahun kecuali IE

Biarkan saya menambahkan daripada melihatnya sebagai hal yang aneh POV lain adalah bahwa sintaks sebenarnya koma diperlukan itu hanya browser memberi Anda istirahat dan tidak memerlukan yang terakhir. Keanehan seseorang adalah kecantikan orang lain. Saya menemukan konsistensi setiap baris yang sama lebih menyenangkan secara pribadi daripada baris terakhir yang berbeda. Tentu saja itu adalah preferensi pribadi, saya hanya membahasnya dengan cara lain untuk melihat sesuatu.

untuk perbedaan saya menemukan perbandingan ini secara online

tidak ada tanda koma diff menambahkan baris

trailing koma diff menambahkan baris

Mari kita mulai dengan let dan const terlebih dahulu. Satu langkah pada satu waktu.

screen shot 2018-07-30 at 5 03 00 pm

Saya pikir waktu tersebut terlalu dekat untuk menelepon. Saya mendapatkan hasil yang berbeda

screen shot 2018-07-31 at 9 13 50

Meskipun di Chrome 70 mereka tidak terlalu dekat

screen shot 2018-07-31 at 9 15 36

saat kita melakukannya

screen shot 2018-07-31 at 9 19 20

screen shot 2018-07-31 at 9 20 18

Izinkan saya menambahkan satu POV lagi untuk tanda koma Anda dapat melihat tanda koma mirip dengan titik koma

Ini adalah kode hukum yang sempurna

 {
      doThis();
      doThat();
      doOther()
 }

Baris terakhir tidak memiliki titik koma. Satu POV adalah melihat koma sebagai hal yang sama. Mungkin seperti ilusi orang/lampu.

Apakah Anda melihat 2 orang atau tongkat lampu keduanya sah. Tetapi dalam kasus itu, dengan koma karena kedua POV cocok ("koma di ujung terlihat seperti , tidak terdefinisi" vs "koma hilang terlihat tidak konsisten") yang satu memiliki manfaat objektif dan yang lainnya tidak ...?

Saya mencoba menambahkan const di suatu tempat dalam kode dan tidak dapat dikompilasi lagi...

screen shot 2018-07-30 at 5 58 46 pm

@mrdoob Format output harus diatur ke ES6 bukan ES atau ES5 .

Menutup mendukung #6419.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat