Freecodecamp: يعتبر الكود المعلق للتحقق من صحة الكود وليس مجرد تعليق!

تم إنشاؤها على ٣١ مايو ٢٠١٧  ·  15تعليقات  ·  مصدر: freeCodeCamp/freeCodeCamp



[استخدام الكائنات للبحث]


رابط التحدي:
https://www.freecodecamp.com/challenges/using-objects-for-lookups

وصف المشكلة


في هذا التحدي ، كان علي إنتاج نسخة كائن من عبارات التبديل. نظرًا لأنه كان علي أن أتذكر كل عضو _'حالة 'في switch_ لإنتاج إصدار كائن ، فقد علقت على جزء التبديل بالكامل وأعدت كتابة إصدار الكائن الصحيح.
رغم ذلك ، لم أتمكن من اجتياز الاختبار.
هذا بسبب اختبار اختبار
You should not use case, switch, or if statements

أثناء التعليق على التبديل ، يجب ألا يتحقق من استخدام _switch_ ويعتبره مجرد تعليق.

معلومات المتصفح

  • اسم المتصفح ، الإصدار: جوجل كروم
  • نظام التشغيل: Windows 10
  • الهاتف المحمول أو الكمبيوتر المكتبي أو الجهاز اللوحي: سطح المكتب

كودك

// Setup
function phoneticLookup(val) {
  var result = "";

  // Only change code below this line
   var lookup = {
    "alpha":"Adams",
    "bravo":"Boston",
    "charlie":"Chicago",
    "delta":"Denver",
    "echo":"Easy",
    "foxtrot":"Frank"
    };

  result = lookup[val];

  /*
  switch(val) {
    case "alpha": 
      result = "Adams";
      break;
    case "bravo": 
      result = "Boston";
      break;
    case "charlie": 
      result = "Chicago";
      break;
    case "delta": 
      result = "Denver";
      break;
    case "echo": 
      result = "Easy";
      break;
    case "foxtrot": 
      result = "Frank";
  }
*/
  // Only change code above this line
  return result;
}

// Change this value to test
phoneticLookup("charlie");



لقطة شاشة

freecodecamp

help wanted blocked on the roadmap bug

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

@ Saif-Shines نعم ، نحن على دراية بهذا الأمر باعتباره مشكلة موجودة على الموقع الرئيسي ، ونفتقر إلى البنية التحتية للحصول على محلل صارم إذا أمكنك ذلك.

الطريقة الوحيدة حاليًا هي المضي قدمًا بحذف التعليقات.

ال 15 كومينتر

@ Saif-Shines نعم ، نحن على دراية بهذا الأمر باعتباره مشكلة موجودة على الموقع الرئيسي ، ونفتقر إلى البنية التحتية للحصول على محلل صارم إذا أمكنك ذلك.

الطريقة الوحيدة حاليًا هي المضي قدمًا بحذف التعليقات.

المساهمون المحتملون ، يجب التحقيق في هذا هنا:
https://github.com/freeCodeCamp/freeCodeCamp/blob/staging/client/rechallenge/throwers.js#L16

/ ccBerkeleyTrue

في التحدي الأول لـ Basic Javascript ، واجهت مشكلة مماثلة أثناء محاولتي التعليق:

// Use comments only when they are actually needed

/* Sometimes, using descriptive names for variables and functions is way better 
than leaving code smell all over your code */

في هذه الحالة ، لأنني أستخدم كلمة "وظيفة" في تعليقي الثاني ، ستطرح:
Error: SyntaxError: Unsafe or unfinished function declaration

ربما يمكن أن يؤدي إجراء اختبارات contents.replace(/\/\*[\s\S]*\*\/|\/\/[^\n]*/gi,'')) بدلاً من contents حل هذه المشكلة؟ (بمعنى المشكلة العامة ، لأنه في حالتي ، سيظل هذا الاختبار المحدد يفشل بسبب كون المحتويات فارغة بعد استبدال التعليقات)

لا يمكننا فعل شيء مثل:
Node node = nodeList.item(i); if(node.getNodeType() == Node.COMMENT_NODE) { continue; } else { //do something }

أود أن أتولى هذا.

أنا مهتم بهذه المشكلة ، فهل يمكن تعيين ذلك لي وهل يمكنك توجيهي إلى الملفات التي تحتاج إلى تغيير.

نظرًا لعدم وجود تحديث حول هذا الأمر في أكثر من أسبوع ، سأتناول هذا الأمر. آمل أن يكون الأمر على ما يرام معكم يا رفاق @ Survivor75 و @ knrt10

raisedadead : أعتقد أن الحل أبسط مما كنا نعتقد.

نقوم بتشغيل تأكيدات على code وهي سلسلة نصية. فلماذا لا نقوم فقط بتشغيل regex على هذه السلسلة وإزالة التعليقات قبل أن يتم استخدامها للتحقق؟

على سبيل المثال في - client/frame-runner.js ، نقوم بجلب محتوى محرر codemirror مثل

const editor = { getValue() { return source; } };
const code = source;

بدلاً من تمرير الشفرة مباشرةً كما هي ، كنت أقوم بتشغيل regex للتخلص من التعليقات مثل

const editor = { getValue() { return source; } };
const code = source.replace(/\/\*[\s\S]*?\*\/|[^\S]\/\/.*$/gm, '');

عند القيام بهذه الطريقة ، لا يتلقى عداء الاختبار أبدًا التعليقات في الكود وكل شيء جيد.

لقد تحققت من صحة هذا التعبير المعتاد هنا - http://regexr.com/3ghvi

ملحوظة:

  • هذا لا يعتبر تعليقات HTML حيث توجد بعض التحديات تجاه البداية والتي تتحقق من صحة وجود تعليقات HTML.
  • تم استبعاد نمط عنوان URL.
  • نظرًا لأن هذا التعبير العادي يستبدل حرفًا يؤدي إلى // فإننا لا نستبدل التعليقات المضمنة غير الموجودة في سطورهم الخاصة.

adityaparab رائع: +1
كدت أنسى ذلك لأنني انخرطت في شيء آخر.
ومع ذلك ، فقد توصلت إلى هذا الرمز ، إذا كنت ستعمل على هذا ، فقم بإلقاء نظرة على الوظيفة أدناه.
function stripComments ( code ) { return code . replace (/\/\/.*|\/\*[^]*?\*\// g , "") ; }

سيؤدي هذا إلى إزالة أي كود معلق :)

للأسف ، الحل الحقيقي الوحيد هنا هو استخدام AST للاختبارات. لقد ناقشت هذا الأمر مع QuincyLarson حول إضافة واجهة برمجة التطبيقات التي تعرض JS AST التي تنتجها شركة babel وإضافة واجهة برمجة تطبيقات مشابهة لواجهة البرنامج المساعد eslint. قد يكون هذا قليلاً لأن الأولوية هي المضي قدمًا في تحديات التفاعل ثم تعميم الطريقة التي يتم بها استيراد التحديات نفسها من الملفات.

لقد واجهت هذه المشكلة للتو بتعليقات تحتوي على كلمة "وظيفة" ... لقد ارتبكت حقًا حتى أوضح أحد الأشخاص في المنتديات ما يجري. آمل أن يتم إصلاح هذه المشكلة قريبًا! ربما يجب أن تكون هناك بعض الرسائل المعروضة للمستخدمين تحذرهم من مشكلات المحلل المتعلقة بالتعليقات في التحديات؟

أنظر أيضا:
https://forum.freecodecamp.org/t/javascript-tests-in-challenges-no-longer-working-correctly/190249

SuperGeniusZeb نشكرك على الإبلاغ عن هذا ، وتأكيد خطوات إعادة إنتاجه.

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

تضمين التغريدة

في الموقع المحدث ، لا تزال التعليقات تُقرأ بالخطأ كرمز بواسطة اختبارات التحدي. خذ هذا التحدي على سبيل المثال:

https://learn.freecodecamp.org/responsive-web-design/css-grid/create-a-column-gap-using-grid-column-gap

باستخدام الكود التالي ، يمكنني اجتياز الاختبار (الذي يتحقق من تعيين grid-column-gap على 20px ) ، على الرغم من وجود grid-column-gap: 20px في تعليق.

<style>
  .d1{background:LightSkyBlue;}
  .d2{background:LightSalmon;}
  .d3{background:PaleTurquoise;}
  .d4{background:LightPink;}
  .d5{background:PaleGreen;}

  .container {
    font-size: 40px;
    min-height: 300px;
    width: 100%;
    background: LightGray;
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    grid-template-rows: 1fr 1fr 1fr;
    /* add your code below this line */
    grid-column-gap: 10px;
    // grid-column-gap: 20px;
    /* add your code above this line */
  }
</style>

<div class="container">
  <div class="d1">1</div>
  <div class="d2">2</div>
  <div class="d3">3</div>
  <div class="d4">4</div>
  <div class="d5">5</div>
</div>

يرجى إعادة فتح هذه المشكلة.

SuperGeniusZeb هل يمكنك من فضلك فتح عدد جديد على https://github.com/freeCodeCamp/learn/issues ؟ شكرا جزيلا.

raisedadead لقد قمت للتو بإنشاء عدد جديد هناك:
https://github.com/freeCodeCamp/learn/issues/165

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات