Jshint: تفعيل بيان الحالة يقع من خلال

تم إنشاؤها على ١٨ فبراير ٢٠١١  ·  10تعليقات  ·  مصدر: jshint/jshint

أحد الأشياء التي لم أتمكن من إقناع كروكفورد بها أبدًا هو السماح بأخطاء بيان الحالة.

حاليًا ، هذا جيد:

مفتاح (فو) {
حالة 1:
الحالة 2:
قم بعمل ما()؛
}

لكن هذا ليس:

مفتاح (فو) {
حالة 1:
doSomethingFirst () ؛
الحالة 2:
قم بعمل ما()؛
}

في إصدار JSLint الذي اخترقته من قبل ، قمت بإجراء فحص للتعليق / _الخطأ في_ / للإشارة إلى أنك تنوي الوقوع في:

مفتاح (فو) {
حالة 1:
doSomethingFirst () ؛
/_يقع من خلال_/
الحالة 2:
قم بعمل ما()؛
}

أود حقًا أن أرى هذا مدرجًا في JSHint ، لأنه كان مصدر ألم في JSLint لفترة طويلة جدًا بالنسبة لي.

التعليق الأكثر فائدة

لأولئك الذين يبحثون عن مفتاح الكائن .jshintrc :

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

ال 10 كومينتر

أيضًا ، من رقم 11 - ربما يجب أن يكون لدى JSHint خيار للسماح بالسقوط على طول الطريق إلى default .

نظرًا لأن سقوط الحالة في كثير من الأحيان يكون غير مقصود ، لم أقم بإضافة خيار منفصل لتجاهل الرسالة فقط. بدلاً من ذلك ، أعدت استخدام نهجك مع تعليق صريح يقول إن السقوط هو أمر مقصود.

 مفتاح (فو) {
 حالة 1:
 افعل شيئا()؛
 /* يقع من خلال */
 الحالة 2:
 افعل شيئا()؛
 }

الالتزام ذات الصلة: 4a72da1.

رائع شكرا!

IIRC ، يشير كروكفورد بشكل خاص في كتابه إلى سبب عدم رغبته في سقوط القضية. القصة مسلية وممتعة إلى حد ما.

آسف للتعليق على هذا ، ولكن التحذير لا يزال قيد التشغيل لـ case s برمية في نهاية الكتلة. يمكنك تعطيل التحذير باستخدام التعليق التوضيحي /* falls through */ ، ولكن التعليق التوضيحي "مضطرب" (بمعنى أنه يتم تشغيل التحذير بعد ذلك) بأي شيء بخلاف المسافة البيضاء بين الحالة السابقة والتعليق التوضيحي والحالة التالية حتى لا يمكنني التعليق على سبب وجود التعليق.

التعليق /* falls through */ بدلاً من break; ميزة غير موثقة. الرجاء إضافته إلى المستندات.

يمكن إضافة تعليقات إضافية على سطر قبل /* falls through */ .

معار. الرجاء إضافة /*falls through*/ إلى المستندات.

أيضا ، يرجى إضافة Supprt من أجل:

case 'none':
default:

في حين أن حالة 'none' الناحية الفنية غير ضرورية ، إلا أنها تضيف إلى قابلية قراءة الكود.

+1 لإضافة معلومات حول هذا إلى المستندات.

كنقطة اهتمام ، وجدت مؤخرًا موقفًا يكون فيه "الوقوع في" الحالات منطقيًا. لقد استخدمت هذا لإجراء عمليات ترحيل لبيانات ذات إصدارات تمت قراءتها من localStorage. السابق:

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
}

مع تطور تنسيق البيانات ، يمكن الاحتفاظ بالشفرة عن طريق إضافة حالات لترحيل الإصدارات الأقدم ، ويتم تطبيق جميع عمليات الترحيل لجعل إصدار معين يصل إلى الأحدث.

لأولئك الذين يبحثون عن مفتاح الكائن .jshintrc :

"-W086": true, //allow fall-through
هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات