Angular-styleguide: اتفاقية حول الأعضاء العامين / الخاصين

تم إنشاؤها على ٢٨ مارس ٢٠١٦  ·  13تعليقات  ·  مصدر: johnpapa/angular-styleguide

لذلك يجب علينا إنشاء اصطلاح في وقت استخدام public و private وحتى التفكير في وقت استخدام شرطة سفلية لبادئة طريقة / سمة.

class Foo {
  public foo: string;
  private bar: number;
  private _fn() { ... }

أنا شخصياً أصوت لاستخدام شرطة سفلية في الطريقة / السمة الخاصة بالإضافة إلى الكلمة الرئيسية private وترك public بدون استخدام.

Angular 2 enhancement

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

لا يحتوي TypeScript / JavaScript على متغيرات خاصة حقيقية ويعني استخدام الفئات أن لدينا قدرة أقل على إخفاء المتغيرات مقارنة بجافا سكريبت قبل الفئة. لدينا فقط اتفاقية "_" لإنقاذنا.

القيمة الأساسية للاصطلاح "_" هو أنه يصرخ " لا تلمس! ". عند تصحيح أخطاء JavaScript ، كل ما علينا فعله.

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

عندما يرى القراء _foo ، يجب أن يعلموا أنه خارج الحدود . إذا أشاروا إلى _foo فإنهم يفعلون ذلك _ على مسؤوليتهم الخاصة_. يجب ألا يكون هناك دموع عندما يزيلها المطور أو يغير سلوكها.

في المستندات والعينات الخاصة بنا ، يجب أن يبدأ الأعضاء الخاصون بـ "_". عندما أهملنا إضافة بادئة خاصة بـ "_" ، فإننا نصحح ذلك بسرعة.

ال 13 كومينتر

وأنا أتفق تماما مع ذلك. أنا آسف ، فاتني هذا الجزء.

رائع.

وأعتقد أن مشكلتك لها منظور مهم لإضافته إلى الدليل ، لذلك سأعيد فتحه. :)

أود أن أضيف الجزء الخاص بتسمية هؤلاء إلى الدليل. إذا سألت ، ثم شخص آخر كذلك.

ما الهدف من استخدام الشرطة السفلية في أسماء الوظائف الخاصة وليس الأعضاء أيضًا؟ أليست خاصة أيضًا؟ أو ، هل تعطي الشرطة السفلية معنى مختلفًا للدالة نفسها؟

الآن بعد أن ذكرت ذلك ، نعم ، أفضل وضع شرطة سفلية للسمات أيضًا. يمكنك الحصول على شيء مثل:

private _foo: string;

@Input()
set foo(value) { this._foo = value; }

get foo() { return this._foo; }

مع واضع أكثر تعقيدا وحاصل بالطبع.

نعم خطأ مطبعي

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

تحديث: كنت أشير إلى ES5 ... باستخدام Typescript ، لا أستخدم الشرطة السفلية

هل تعتقد أنه سيكون هناك التباس إذا تم حذف الشرطة السفلية؟

لا يحتوي TypeScript / JavaScript على متغيرات خاصة حقيقية ويعني استخدام الفئات أن لدينا قدرة أقل على إخفاء المتغيرات مقارنة بجافا سكريبت قبل الفئة. لدينا فقط اتفاقية "_" لإنقاذنا.

القيمة الأساسية للاصطلاح "_" هو أنه يصرخ " لا تلمس! ". عند تصحيح أخطاء JavaScript ، كل ما علينا فعله.

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

عندما يرى القراء _foo ، يجب أن يعلموا أنه خارج الحدود . إذا أشاروا إلى _foo فإنهم يفعلون ذلك _ على مسؤوليتهم الخاصة_. يجب ألا يكون هناك دموع عندما يزيلها المطور أو يغير سلوكها.

في المستندات والعينات الخاصة بنا ، يجب أن يبدأ الأعضاء الخاصون بـ "_". عندما أهملنا إضافة بادئة خاصة بـ "_" ، فإننا نصحح ذلك بسرعة.

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

إنه أيضًا مؤشر مرئي رائع لكيفية استخدامه.

كل ما قاله ورد.

أيضًا مع ng2 يمكننا الحصول على مرجع مثل:

<my-dir #myDir>

والوصول إلى السمات في الداخل. إذا كان لدى أحدهم شرطة سفلية ، فهذه إشارة إلى "يمكن كسر هذا غدًا ، لا تفعل ذلك"

موافق ، لا توجد طريقة أفضل للتمييز بينهما. إنها مدرسة قديمة للمطورين. لا تؤذي أي شيء باستثناء الراحة.

ستنتقل مشكلات Angular 2 الآن إلى دليل نمط A2 في angular.io repo

يرجى ملاحظة أن Angular codeStyle الحالي باقتراحjohnpapa هنا وينصح الآن بعدم استخدام

Avoid prefixing private properties and methods with an underscore.
- Why? Follows conventional thinking for properties and methods.
- Why? JavaScript lacks a true private property or method.
- Why? TypeScript tooling makes it easy to identify private vs. public properties and methods.

إذن هذا عكس ما هو مقترح في هذا الموضوع.

عندما قرأت هذه المشكلة لأول مرة ، اعتقدت أنني وجدت اختلافًا ، لكن القاعدة المحدثة / المعكوسة تتوافق مع إرشادات الترميز المطبوع عليها (القاعدة رقم 6 للأسماء).

أعتقد أن الوسيطة TypeScript tooling ربما أثرت على جون. نظرًا لأنه يتقن لغة Gulp ، فقد يكون قد قرر أن عدم وجود ملفات خرائط تعمل لتصحيح الأخطاء هو مجرد موقف غير عملي ، يجب معالجته بشكل مباشر ، بدلاً من إصلاحه في التعليمات البرمجية الخاصة بك عن طريق ملؤها بالشرطات السفلية: P.

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