اتباع نمط Google TypeScript الدليل.
نقل البيانات إلى TypeScript وES6
تم كتابة Blockly في الأصل باستخدام ES5.1 بما يتوافق مع إصدار قديم
كان ساريًا في ذلك الوقت من دليل أسلوب JavaScript في Google
. مكتوب حديثًا
يجب أن يتوافق الرمز مع دليل التنسيق الحالي وأن يستخدم ميزات اللغة ES6
مثل let
وconst
وclass
، ما يؤدي إلى إتلاف المهمة حيثما ينطبق ذلك.
قد يتم تعديل الرمز الحالي أو قد لا يلتزم بالسياسات. يحاول فريق Blockly اتخاذ أفضل قرار مع الأخذ في الاعتبار اتساق الرموز البرمجية وتجربة مستخدمي المكتبة. على سبيل المثال، قد نختار عدم إعادة تسمية الدوال العامة التي لم تعُد متوافقة مع دليل الأنماط.
الإجراءات الموصى بها
- استخدِم أدوات فحص الأخطاء والتنسيق.
- نستخدم eslint ولدينا
.eslintrc.js
ملف تم إعداده بقواعد للنمط المفضّل لدينا. - نستخدم prettier للتنسيق التلقائي.
- شغِّل
npm run lint
لتشغيل linter وnpm run format
لتنفيذ العملية. وتنسيقه.
- نستخدم eslint ولدينا
- مسافة بادئة مع مسافات، وليس علامات جدولة.
- استخدِم الدلالات.
- استخدِم
camelCase
للمتغيّرات والدوال. - استخدِم "
TitleCase
" للصفوف. - استخدِم
ALL_CAPS
للثوابت. - استخدام الأقواس
لجميع بُنى التحكّم.
- استثناء: يمكنك حذف الأقواس في عبارات
if
المكوّنة من سطر واحد.
- استثناء: يمكنك حذف الأقواس في عبارات
- استخدِم علامات الاقتباس المفردة (باستثناء عند كتابة JSON).
- إعادة تعريف المتغيّرات في حلقات
for
بعبارة أخرى، يجب دائمًا كتابةfor (const i = 0; ...)
بدلاً منfor (i = 0; ...)
.- يؤدي عدم إجراء ذلك إلى زيادة خطر أن يصبح المتغيّر متعلّقًا بغير عنصر بعد إجراء إعادة تنظيم في رمز برمجي أعلى في دالة، ما يؤدي إلى أن يصبح متغيّرًا عامًا بشكل غير متوقّع.
- ابدأ التعليقات بأحرف كبيرة وانتهِ بها بنقاط.
- إنشاء مشاكل GitHub باستخدام "المهام" وربطها باستخدام
TODO(#issueNumber)
. - أضِف تعليقات توضيحية على كل المحتوى باستخدام TSDoc.
الإجراءات غير المُوصى بها
- اضبط المسافة البادئة باستخدام علامات التبويب.
- استخدِم الشرطة السفلية في نهاية أسماء المتغيّرات أو الدوالّ.
- تستخدم بعض التعليمات البرمجية السابقة الشرطات السفلية للخصائص الخاصة أو الداخلية أو الأخرى. مع أنّه قد يستمر استخدام هذه الرموز، يجب عدم إضافة أي رمز جديد وفقًا لهذه الاتفاقية.
- استخدام حساب "
snake_case
". - استخدِم علامتَي اقتباس مزدوجتَين (باستثناء كتابة ملف JSON).
- استخدام ملف TSDoc بتنسيق غير صحيح
- يتم نشر TSDoc تلقائيًا كجزء من مستنداتنا.
- كتابة
TODO (username)
- بدلاً من ذلك، يمكنك إنشاء مشاكل على GitHub تتضمّن المهام التي يجب إكمالها وربطها باستخدام
TODO(#issueNumber)
.
- بدلاً من ذلك، يمكنك إنشاء مشاكل على GitHub تتضمّن المهام التي يجب إكمالها وربطها باستخدام
- استخدام حساب "
string.startsWith
". يمكنك استخدامBlockly.utils.string.startsWith
كبديل.
TSDoc
يستخدم فريق Blockly TSDoc لإضافة تعليقات توضيحية إلى الرموز البرمجية إنشاء الوثائق. نتوقع استخدام TSDoc لجميع الخصائص العامة للفئات، وجميع الدوال التي تم تصديرها.
يجب أن تبدأ تعليقات TSDoc بـ /**
وتنتهي بـ */
ليتم تحليلها بشكل صحيح.
الأنواع
يتم حذف الأنواع من TSDoc لأنّ هذه المعلومات متوفّرة في رمز TypeScript بشكل مباشر. إذا كنت تعدّل أحد ملفات JavaScript القليلة المتبقية، أدرِج annotated type وفقًا لمستندات Closure Compiler .
مستوى الرؤية
الدوال أو الخصائص التي يجب الوصول إليها فقط داخل مكتبة حظر
يجب إضافة تعليقات توضيحية إليه باستخدام @internal
. يمنع هذا هذه الخصائص من
يظهر في الوثائق العامة. يجب وضع مُعدِّلات visibility
الأخرى في رمز TypeScript مباشرةً، وليس في TSDoc.
أماكن إقامة
يجب أن يشتمل TSDoc للمواقع على وصف لها. قد يتم حذف الوصف للمواقع التي تتضمّن وصفًا ذاتيًا.
/**
* The location of the top left of this block (in workspace coordinates)
* relative to either its parent block, or the workspace origin if it has no
* parent.
*
* @internal
*/
relativeCoords = new Coordinate(0, 0);
الدوال
يجب أن تتضمّن التعليقات التوضيحية للدوالّ ما يلي:
- وصف للدالة
- علامة
@param
واحدة لكل مَعلمة، بما في ذلك- الاسم
- الوصف
- علامة
@returns
إذا كانت الدالة قيمة، مع وصف للقيمة التي تم إرجاعها.
قد يتم حذف الأوصاف للدوال أو المعلمات أو القيم المعروضة إذا كانت واضحة بذاتها.
على سبيل المثال:
/**
* Find the workspace with the specified ID.
*
* @param id ID of workspace to find.
* @returns The sought after workspace or null if not found.
*/
export function getWorkspaceById(id: string): Workspace | null {
return WorkspaceDB_[id] || null;
}