Three.js: إعادة النظر في دليل الأسلوب؟

تم إنشاؤها على ١٩ يوليو ٢٠١٨  ·  16تعليقات  ·  مصدر: mrdoob/three.js

أنا متأكد من أن هذا يفتح علبة من الديدان ولكن [دليل النمط] يبدو قديمًا بعض الشيء وأود اقتراح تغييرين

تفضل const و let على var ؟

لا أعرف سبب تفضيل var (تم إخباره بالتغيير إلى var في أحد العلاقات العامة الأخيرة). تخميني هو أن هذا هو المكان الذي بدأت فيه ولأن const و let جديدان. ولكن الآن بعد أن استخدمت قاعدة الكود وحدات ES5 ، يبدو أن أي سبب للاحتفاظ بـ var قد انتهى منذ فترة طويلة. نظرًا لخطوط import ، لكي تعمل الشفرة على المتصفحات التي تدعم var ، يجب تشغيل الكود من خلال مترجم. هذا التحويل نفسه هو / سيقوم بالفعل بتحويل const و let إلى var .

علاوة على ذلك ، هناك إيجابيات موضوعية ملموسة لاستخدام const و let أكثر من var . يتم تحديد كلاهما إلى أقواس بدلاً من نطاق الوظيفة. لا تقم بإنشاء متغيرات عامة بخلاف var . بالتأكيد ، يستخدم جزء كبير من الكود var الآن (على الرغم من أن IIRC eslint يمكنها إصلاح ذلك تلقائيًا). سيؤدي تغيير linter إلى طلب const و let وتغيير الكود القديم ببطء إلى منع المزيد من الأخطاء والتسريبات. أيضًا مع استخدام const و let كل مكان ، فمن الممكن أن يقوم تمكين eslint بالتحقق من المزيد من المتغيرات غير المحددة التي كانت على الأقل بالنسبة لي مساعدة كبيرة.

كان هناك وقت كان فيه var أسرع ولكن هذا الوقت قد ولى منذ زمن طويل.

هل حان الوقت للتوقف عن استخدام var ؟

السماح بفواصل زائدة في المصفوفات والكائنات متعددة الأسطر

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

أعني على سبيل المثال عن طريق تتبع الفواصل في المصفوفات والكائنات متعددة الأسطر

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

و

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

مع الفواصل اللاحقة ، تتطلب إضافة أو إزالة الأسطر التعامل مع سطر واحد فقط. باستخدام الفاصلات اللاحقة ، فهذا يعني ضرورة الانتباه دائمًا إلى الفاصلة الأخيرة وإزالتها أو إضافتها.

بالطبع كل ما يتم تحديده على ما يرام ، سأتبع دليل العلاقات العامة. لقد اعتقدت أنني سأطلب عندما تحول الكود إلى وحدات ES5 إذا كان الوقت قد حان لإعادة زيارة بعض دليل النمط (لاحظ أن الجزء var ليس في الواقع في دليل النمط.)

Suggestion

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

مترجمي JS يزيلون تلك الفاصلة هذه الأيام؟

كانت جميع المتصفحات جيدة مع تلك الفاصلة في المصفوفات والكائنات لمدة> 10 سنوات باستثناء IE

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

أما بالنسبة للفروقات فقد وجدت هذه المقارنات عبر الإنترنت

لا يوجد فرق فاصلة زائدة مضيفا سطر

فرق الفاصلة الزائدة إضافة سطر

ال 16 كومينتر

كان هناك وقت كان فيه var أسرع ولكن هذا الوقت مضى وقتًا طويلاً.

على ماذا تبني هذا؟ IIRC في المرة الأخيرة التي اختبرنا فيها هذا ، لم يكن هناك فرق لـ const لكن let كان أبطأ إلى حد ما. سيكون من الجيد رؤية بعض الاختبارات المحدثة في هذا الشأن.

السماح بفواصل زائدة في المصفوفات والكائنات متعددة الأسطر

أتفق بالتأكيد مع هذا التغيير ، إذا لم تكن هناك مشكلات مع IE (ما زلنا نريد دعم IE 10 و 11 على الأقل ، أليس كذلك؟).

كان هناك وقت كان فيه var أسرع ولكن هذا الوقت مضى وقتًا طويلاً.

على ماذا تبني هذا؟ IIRC في المرة الأخيرة التي اختبرنا فيها هذا ، لم يكن هناك فرق لـ const لكن let كان أبطأ إلى حد ما. سيكون من الجيد رؤية بعض الاختبارات المحدثة في هذا الشأن.

نعم ، ستساعد بعض الأرقام في هذا القرار.

السماح بفواصل زائدة في المصفوفات والكائنات متعددة الأسطر

أعني على سبيل المثال عن طريق تتبع الفواصل في المصفوفات والكائنات متعددة الأسطر

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

يقرأ عقلي ذلك على النحو التالي:

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

مترجمي JS يزيلون تلك الفاصلة هذه الأيام؟

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

بالنسبة لي ، فإن الغرض من الفواصل اللاحقة هو أنها تجعل عملية إضافة الأشياء وإزالتها أسرع ، وكذلك إعادة ترتيبها عن طريق القص / اللصق. لا داعي للقلق إذا قمت بقص العنصر الأخير أم لا ، فكل سطر هو نفسه. بالنسبة إلى رؤية undefined ، من السهل تجنب ذلك إذا كنت تعلم أن هناك عنصرًا واحدًا فقط في كل سطر - وفي الحالات التي تكون فيها المصفوفة في سطر واحد مثل [1, 2, 3, 4, 5] فلن تضيف فاصلة لاحقة.

من ناحية أخرى ، لا أعتقد أن الأمر مهم في كلتا الحالتين. التبديل إلى const / let هو المشكلة المهمة هنا.

... ولكن الآن هذا النقل يحدث ...

نحن لا نتحول ، أليس كذلك؟ Rollup يستبدل فقط بناء جملة استيراد / تصدير ES6 مع ترك كل شيء آخر بمفرده ، ما لم تقم بإضافة مكونات إضافية مثل rollup-plugin-buble . ولكن يتم دعم let / const في IE11 على أي حال.

تخدم الفواصل اللاحقة أيضًا غرضًا أكبر بكثير من مجرد "سهولة الاستخدام". في المشاريع الكبيرة التي يساهم فيها الكثير من الأشخاص ، من المفيد استخدام أشياء مثل git blame لمعرفة من المسؤول عن أي جزء من الكود.

لذلك ، مع توضيح ما هو واضح هنا: إذا كانت هناك أشياء مدرجة في أسطر متعددة تمت إضافتها بواسطة mrdoob ، فسيظهر اسمي في السطر الأخير من الكود الذي لم أكتبه.

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

مترجمي JS يزيلون تلك الفاصلة هذه الأيام؟

نعم.

فيما يتعلق باستخدام let مقابل var :

الفرق بين let و var لم يعد مهمًا هذه الأيام إذا كان الأمر يتعلق بالأداء. يتمتع V8 و Spidermonkey (Firefox) بتحسينات رائعة هذه الأيام تعمل بشكل جيد حقًا.

شاهد هذا المنشور للحصول على شرح تفصيلي (تأكد من تشغيل المقتطفات الفعلية لترى أن الاختلاف يمكن إهماله إلى حد كبير الآن): https://stackoverflow.com/questions/37792934/why-is-let-slower-than-var- in-a-for-loop-in-nodejs

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

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

فقط سنتان.

كمرجع:

الفواصل اللاحقة هي واحدة من أفضل أنماط js التي رأيتها وتجعل الاختلافات أكثر وضوحًا.

مترجمي JS يزيلون تلك الفاصلة هذه الأيام؟

كانت جميع المتصفحات جيدة مع تلك الفاصلة في المصفوفات والكائنات لمدة> 10 سنوات باستثناء IE

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

أما بالنسبة للفروقات فقد وجدت هذه المقارنات عبر الإنترنت

لا يوجد فرق فاصلة زائدة مضيفا سطر

فرق الفاصلة الزائدة إضافة سطر

لنبدأ بـ let و const أولاً. خطوة واحدة في وقت واحد.

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

أعتقد أن هذه المواعيد قريبة جدًا من الاتصال بها. أحصل على نتائج مختلفة

screen shot 2018-07-31 at 9 13 50

على الرغم من أنها في Chrome 70 ليست قريبة من بُعد

screen shot 2018-07-31 at 9 15 36

بينما نحن فيه

screen shot 2018-07-31 at 9 19 20

screen shot 2018-07-31 at 9 20 18

اسمحوا لي أن أضيف POV آخر للفاصلات اللاحقة 😜 يمكنك رؤية الفواصل اللاحقة مثل الفاصلة المنقوطة

هذا هو قانون قانوني تماما

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

السطر الأخير يفتقد الفاصلة المنقوطة. أحد POV هو رؤية الفاصلة على أنها نفس الشيء. ربما هو مثل وهم الناس / المصباح.

سواء رأيت شخصين أو عصا مصباح كلاهما صالح. ولكن في هذه الحالة ، مع وجود فاصلة نظرًا لأن كلا من POVs مناسبين ("تبدو الفاصلة في النهاية ، تبدو غير متسقة" مقابل "فاصلة مفقودة") أحدهما له فوائد موضوعية والآخر ليس كذلك ...؟

حاولت إضافة const في مكان ما في الكود ولم يعد تجميعًا بعد الآن ...

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

mrdoob يجب تعيين تنسيق الإخراج إلى ES6 بدلاً من ES أو ES5 .

إغلاق لصالح # 6419.

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

القضايا ذات الصلة

yqrashawn picture yqrashawn  ·  3تعليقات

danieljack picture danieljack  ·  3تعليقات

jack-jun picture jack-jun  ·  3تعليقات

fuzihaofzh picture fuzihaofzh  ·  3تعليقات

boyravikumar picture boyravikumar  ·  3تعليقات