كل المقالات →

التطبيق النظيف

نُشر في ٧ يوليو ٢٠٢٢ · 2 دقائق قراءة

يمكننا تعلّم الكثير من مبادئ تطوير البرمجيات والمعمارية. كتابة الكود النظيف أمر بالغ الأهمية في تطوير البرمجيات. لكن ServiceNow منصة منخفضة الكود — كيف ينطبق هذا عليها؟

دعنا ننظر إلى مبادئ الكود النظيف ونرى كيف يمكننا تطبيقها على تطبيقنا لـServiceNow.

الموثوقية

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

  • صحيح — الكود (سكريبت العميل، قاعدة العمل، التدفق) يتوافق مع المتطلب
  • مستقر — السلوك متسق مع مختلف المدخلات والمواقف الصحيحة
  • مرن — التطبيق يتجنب الفشل؛ يستمر في العمل حين تسوء الأمور

أمثلة على تطبيق غير موثوق:

  • سكريبت عميل يستخدم معالجة DOM مباشرة
  • UI Policy يعمل أحياناً ولا يعمل أحياناً بسبب مشكلة ترتيب (غير مستقر)
  • تدفق بلا سياسة إعادة محاولة لاستدعاءات REST/SOAP — إذا حدثت مشكلة شبكية، يتوقف التدفق ببساطة (غير مرن)

الكفاءة

الموارد محدودة. حين نصمم حلولاً في NOW Platform، ينبغي أن نفعل ذلك مع مراعاة الكفاءة. بُعدان للنظر فيهما: الوقت والحجم.

الوقت — كم يستغرق تنفيذ إجراء ما؟

انظر إلى هذين الكتلتين من الكود اللتين تحسبان حوادث P1:

// الكتلة الأولى — غير كفؤة
var count = 0;
var gr = new GlideRecord('incident');
gr.addQuery('category', 'software');
gr.query();
while (gr.next()) {
  count++;
}
gs.info('العدد: ' + count);
// الكتلة الثانية — كفؤة
var gr = new GlideAggregate('incident');
gr.addQuery('category', 'software');
gr.addAggregate('COUNT', 'sys_mod_count');
gr.query();
if (gr.next()) {
  gs.info('العدد: ' + gr.getAggregate('COUNT', 'sys_mod_count'));
}

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

الحجم — ما حجم الأشياء التي تنشئها؟

عند بناء بوابة بالصور، حسّن حجم الصور حتى لا تؤثر على وقت تحميل الصفحة. الوفورات الصغيرة تتراكم.

قابلية الصيانة

تشير قابلية الصيانة إلى سهولة إجراء التغييرات المناسبة. مثال كلاسيكي: قيمة مُضمَّنة مباشرة في قاعدة عمل مقابل خاصية نظام.

// مُضمَّن — هشّ
gr.assignment_group = '4baec2fe07d3f0101263f19d7c1ed0a6';

// قابل للصيانة — قابل للإعداد
gr.assignment_group = gs.getProperty('incident.default_assignment');

اسأل نفسك أثناء التطبيق:

  • هل حلّي جامد؟ ما مدى سهولة توسيعه؟
  • ما مدى هشاشته — إذا غيّرت شيئاً واحداً، ماذا سينكسر؟

سهولة الاستخدام

سهولة الاستخدام تتعلق بخلق تجربة جيدة — للمستخدمين النهائيين وللمستخدمين التقنيين. لا يتعلق الأمر فقط بتلبية المتطلبات؛ بل بتمكين المستخدمين من تحقيق أهدافهم بأقل قدر من الوقت والجهد.

بالنسبة للمستخدمين التقنيين، تعني سهولة الاستخدام اتباع أنماط متسقة:

  • دائماً استخدم التعليقات لشرح ما يفعله كودك
  • سمّ سكريبتات العميل وقواعد العمل والتدفقات بأسماء واضحة تدل على وظيفتها
  • اربط مجموعات التحديث بقصة المستخدم الأصلية: مثال STRY0010001-New Incident Caller-02022022

الكود النظيف لا يتعلق بالكمال — بل يتعلق بترك الأمور أفضل مما وجدتها.