كيفية الطلب

1 تسجيل الدخول أو إنشاء حساب جديد.
2 راجع طلبك أو اطلب خدمة جديدة.
3 تأكيد الدفع

إذا كنت لا تزال تواجه مشكلات ، فالرجاء إخبارنا بذلك عن طريق إرسال بريد إلكتروني إلى support@natchcenter.com . شكراً لك!

ساعات العمل

الإثنين-للجمعة 9:00AM - 20:00PM
السبت - 9:00AM-17:00PM
أيام الأحد عن طريق موعد مسبق فقط!

احذر التأثيرات الجانبية في البرمجة

من قبل NatchCenter / أبر 1, 2018 / نشرت في المواقع
احذر التأثيرات الجانبية في البرمجة

أذكِّرك بتعريف التأثيرات الجانبية كما ذكر في معيار PSR-1 وهو:

يجب على الملف أن ينشئ بنى برمجية جديدة مثل الأصناف والدوال والثوابت ...إلخ. ودون أن يسبب أي "تأثير جانبي"، أو يجب أن ينفِّذ الخطوات المنطقيَّة التي تؤدي إلى "تأثيرات جانبية" ولكن لا يسمح أن ينفِّذ كلا الأمرين.

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

التحدث عن التأثيرات الجانبية في أحد السياقات قد لا يختلف عن سياقات أخرى بينما في البرمجة قد يعني شيئًا آخر.

التأثيرات الجانبيَّة في البرمجة
فكرة «التأثيرات الجانبية» عمومًا أو التعريف العام لها بسيط جدًا وهو:

تأثير اعتيادي أو ثانوي غير مرغوب به لدواء أو علاج طبي.

إن أغفلت جانب العلاج بأكمله فسيبقى لديك التأثيرات الثانوية غير المرغوب بها وهنا يكمن الجزء الذي يحتمل أن يكون مربكًا وهو:

نختار أن نضمِّن ملفًا؛
نعلم ما يفعله هذا الملف؛
وبذلك، إن كنا نعلم ما الذي أدرجناه وما الذي يفعله فكيف يستطيع أن يضيف شيئًا غير مرغوب فيه؟
هكذا أُسأل غالبًا عندما تميل دفة الحديث تجاه موضوع التأثيرات الجانبيَّة. لقد عمَّمتُ مفهوم التأثيرات الجانبيَّة دومًا في البرمجة على أنّه «أي شيء» يغير حالة البرنامج.

التأثيرات الجانبيَّة في ووردبريس
لنفترض أنَّك تعمل على ووردبريس ولديك ملفًا مسؤولًا عن إضافة قائمة فرعيَّة إلى قائمة موجودة في أعلى مستوى.

يمكن أن يكون ذلك الصنف (class) بسيطًا إذ يتلخص عمله باستدعاء جزء من الواجهة البرمجية لورردبريس (WordPress API)؛ وستُنفَّذ إحدى الدوال عند وقوع حدث معيّن مرتبط بخطَّاف (hook) ثمَّ ستُضاف بعدئذٍ القائمة الفرعية.

لكن ماذا لو أدى ذلك الصنف أو دالة فيه أو تضمين ملف ما إلى إضافة بعض شيفرات JavaScript أو دالة تؤدي إلى تغيير حالة القائمة الفرعية مثل أن تسلك السلوك نفسه الذي تبديه عندما يُضغط عليها إذا مرَّر المستخدم الفأرة فوقها أو أي سلوكٍ آخر لم يقصده المستخدم ولا البرنامج.

يمكننا أن ندعو ما سبق بالتأثير الجانبي الذي يغير من حالة البرنامج.

ما الذي يجب أن تفعله الوحدة (Module)؟
يجب على الصنف القيام بشيء واحد بحسب مبدأ المسؤولية الواحدة (single responsibility principle) وهو:

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

لكن عندما نضيف أمرًا جديدًا إلى الصنف ليزيد من وظائفه أو نغيّر جزءًا جوهريًا فيه فهذا يمثِّل تأثيرًا جانبيًا.

تذكر أنَّ إضافة مسؤوليات جديدة إلى الصنف ليست أمرًا سيئًا بالمطلق (فالأمر لا يماثل التأثيرات الجانبيَّة التي تحدَّث عنها معيار PSR-1) ولكن من المهم معرفة متى يجوز ذلك ومتى يكون من المستحسن تجنبه.

كيف نضيف وظيفةً أخرى للبرنامج؟
أعتقد أنَّ السؤال الذي يجب أن نسأله أنفسنا هو كيف نضيف وظيفة تغير من حالة برنامج وإن أضفناها فهل هي خطأ يا ترى؟

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

لكن التأثيرات الجانبيَّة تظهر عند حدوث إحدى حالات البرنامج.

اقرأ أيضا .. ما هي البرمجة وكيف أتعلمها ؟

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

طريقة إضافة وظيفة تعمل بالطريقة نفسها وهي: تعريف أصناف تكون مسؤولة عن أداء غرض محدَّد ثم ترك تلك الأصناف لتنفِّذ ما هي مسؤولةٌ عنه.

عندما تعمل هذه المكونات جنبًا إلى جنب مع مكون آخر يصبح لديك برنامجًا يعمل بشكل صحيح تكون كل وحدة فيه (صنف أو دالة أو غيرهما) تعمل ضمن المسار المحدَّد لها.

 

خدماتنا  

خدمات البرمجة في تركيا

خدمات التصميم في تركيا

خدمات التسويق الإلكتروني في تركيا   

#تعرف أكثر على برمجة برامج الكمبيوتر في تركيا

#ما تحتاج أن تعرفه عن الاعلانات الممولة وعمليات البحث 

 

#تطبيقات الموبايل والأجهزة اللوحية

 #التصوير الاحترافي


#الترجمة وإدخال البيانات

 

شارك و أخبر أصدقائك عن الموضوع لتعم الفائدة

تسجيل الدخول إلى حسابك للوصول إلى ميزات مختلفة

او استخدم وسائل التواصل

إنشاء حساب

نسيت معلومات الدخول؟

عرض سعر

سنفعل كل ما في وسعنا لجعل مشروعك أفضل مشروع لدينا!

إشترك معنا في الأخبار

سوف تتلقى إشعارات عن أحدث العروض والعروض الترويجية

لا تظهر هذا مرة أخرى!
TOP