Jshint: Aktifkan pernyataan kasus gagal

Dibuat pada 18 Feb 2011  ·  10Komentar  ·  Sumber: jshint/jshint

Salah satu hal yang saya tidak pernah bisa meyakinkan Crockford adalah membiarkan kesalahan pernyataan kasus.

Saat ini, ini baik-baik saja:

beralih (untuk){
kasus 1:
kasus 2:
lakukan sesuatu();
}

Tapi ini bukan:

beralih (untuk){
kasus 1:
melakukanSesuatuPertama();
kasus 2:
lakukan sesuatu();
}

Dalam versi JSLint yang saya retas sebelumnya, saya memeriksa komentar /_falls through_/ sebagai indikasi bahwa Anda berniat untuk gagal:

beralih (untuk){
kasus 1:
melakukanSesuatuPertama();
/_terjatuh_/
kasus 2:
lakukan sesuatu();
}

Saya benar-benar ingin melihat ini disertakan dalam JSHint, karena sudah lama sekali bagi saya di JSLint.

Komentar yang paling membantu

Bagi mereka yang mencari kunci objek .jshintrc :

"-W086": true, //allow fall-through

Semua 10 komentar

Juga, dari #11 — JSHint mungkin harus memiliki opsi untuk memungkinkan jatuh hingga default .

Karena lebih sering jatuhnya kasus tidak disengaja, saya tidak menambahkan opsi terpisah untuk mengabaikan pesan itu. Sebagai gantinya, saya menggunakan kembali pendekatan Anda dengan komentar eksplisit yang mengatakan bahwa jatuh itu disengaja.

 beralih (untuk) {
 kasus 1:
 dasar();
 /* jatuh melalui */
 kasus 2:
 dasar();
 }

Komit terkait: 4a72da1.

Keren terima kasih!

IIRC, Crockford menyebutkan secara spesifik dalam bukunya mengapa dia tidak menyukai case fall-through. Ceritanya lucu dan agak mencela.

Maaf untuk mengomentari ini, tetapi peringatan masih dipicu untuk case s dengan lemparan di akhir blok. Anda dapat menonaktifkan peringatan dengan anotasi /* falls through */ , tetapi anotasi tersebut "terganggu" (dalam arti bahwa peringatan kemudian dipicu) oleh apa pun selain spasi putih antara huruf sebelumnya, anotasi, dan berikutnya kasus jadi saya bahkan tidak bisa mengomentari mengapa komentar itu ada.

Komentar /* falls through */ alih-alih break; adalah fitur yang tidak didokumentasikan. Silakan tambahkan ke dokumen.

Komentar tambahan dapat ditambahkan pada baris sebelum /* falls through */ .

Diperbantukan. Harap tambahkan /*falls through*/ ke dokumen.

Juga, silakan tambahkan dukungan untuk:

case 'none':
default:

Meskipun secara teknis kasing 'none' tidak diperlukan, ia menambah keterbacaan kode.

+1 untuk menambahkan info tentang ini ke dokumen.

Sebagai hal yang menarik, saya baru-baru ini menemukan situasi di mana kasus "jatuh" masuk akal. Saya menggunakan ini untuk melakukan migrasi data berversi yang dibaca dari localStorage. Mantan:

function migrate( version, data ) {
    switch( version ) {
        case 1 :
            data.new1 = data.old;  // convert data from version 1 to version 2
            delete data.old;
        case 2 :
            data.new2 = data.new1;  // convert data from version 2 to version 3
            delete data.new1;
    }
    return data;  // return data in version 3 format
}

Seiring berkembangnya format data, kode dapat dipertahankan dengan menambahkan kasus untuk memigrasikan versi yang lebih lama, dan semua migrasi untuk membawa versi tertentu ke versi terbaru diterapkan.

Bagi mereka yang mencari kunci objek .jshintrc :

"-W086": true, //allow fall-through
Apakah halaman ini membantu?
0 / 5 - 0 peringkat