Metigator | عصام عبدالنبي

Description
زاوية تابعة لقناة metigator للنقاش التقني
Advertising
We recommend to visit

قناة احمد علي على تيليجرام ( شروحات تقنية ، تطبيقات ، ‏أفلام ومسلسلات ، خلفيات ، و المزيد )

Last updated 1 month ago

يرمز تيليجرام إلى الحريّة والخصوصيّة ويحوي العديد من المزايا سهلة الاستخدام.

Last updated 3 days ago

- بوت الإعلانات: 🔚 @FEFBOT -

- هناك طرق يجب ان تسلكها بمفردك لا اصدقاء، لا عائلة، ولا حتى شريك، فقط انت.

My Tragedy Lies With Those Things That Happen in One Second And Remain

- @NNEEN // 🔚: للأعلانات المدفوعة -

Last updated 3 weeks, 2 days ago

3 months, 3 weeks ago

عشان تتأكد انك متحكم في معلومة بشكل كويس، لازم فعلا تكون قادر تجاوب على 3 اسئلة أساسية:

(إيه) | What: السؤال ده بسيط، بيعرفك ايه هي المعلومة او المفهوم. لو قدرت تشرحه ببساطة وسلاسة، يبقى دي خطوة اولى إنك فاهمه كويس.

(إزاي) | How: ده بيوضح ازاي تقدر تطبق او تستخدم المعلومة في السيناريوهات العملية. هنا بتيجي خبرتك العملية اللي بتخليك تتعامل مع المفهوم بشكل فعلي.

(ليه) | Why: هنا بقى بيبان عمق فهمك. تبدأ بالاجابة بشكل سطحي، زي مثلا "ليه بنستخدم حاجة معينة؟!" لكن العمق بيظهر لما تقدر تشرح الاسباب وراء الاستخدام ده بمستويات متدرجة، كل ما تنزل في الشرح كل ما توضح أكتر انك متمكن ومتمرس.

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

💡 مثلا كلمني عن الانترفيس (Interface) في لغة #C؟

(إيه) | What:
الإنترفيس في C# هو عقد بيحدد الدوال والخصائص اللي الكلاس لازم ينفذها.

(إزاي) | How:
▫️ public class CreditCard : IPaymentMethod { / implementation / }
▫️ public interface IPaymentMethod : ITransaction

(ليه) | Why

بيسمحلك تطبق أكتر من انترفيس في نفس الكلاس، وبيحل مشكلة التوريث من كلاس واحد.
بيفصل الكود عن بعضه عن طريق تحديد السلوكيات من غير ما يحدد التنفيذ. (Abstraction/Decoupling)
بيسهل اختبار الوحدة (unit testing) عن طريق السماح باستخدام الكائنات الوهمية (mocks).
بيعزز (loose coupling) عشان تصمم نظام مرن (Flexible).
بيدعم حقن التبعيات (Dependency Injection) لتحسين قابلية التوسع (Extensibility)
بيحسن صيانة الكود عن طريق تشجيع التصميم القائم على الوحدات (Modules).
بيطبق مبدأ تقسيم الانترفيس (ISP) من مبادئ SOLID.
بيسهل تبديل التنفيذات المختلفة في وقت التشغيل Runtime polymorphism.
بيساعدك على تجميع السلوكيات المختلفة بشكل مغلق عن التفاصيل الداخلية Encapsulation.
تقدر تعيد استخدام الكود بتاعك Reusability بسهولة في مشاريع مختلفة او في أقسام مختلفة من المشروع بدون تكرار.
بيحدد عقد بين الكلاس اللي بيطبقه واي كود خارجي يتعامل معاهContract-Based Design وده يعرف ايه السلوكيات اللي لازم تكون موجودة، وده بيزود الثقة في النظام.
بتخلي كل كلاس يركز في حاجة معينة Separation of Concerns وده بيبسط عملية تطوير الكود وصيانته.
بيسهل التكامل ما بين الأنظمة المختلفة Interoperability

في القناة عندي تقريبا تم شرح النقاط اللي فوق باستفاضة!

4 months ago
4 months, 1 week ago

السلام عليكم ورحمة الله وبركاته.
رجاءًا من يتواصل خاص ولديه استفسار أو سؤال، تكون رسالته مكتوبة والسؤال مباشر.
ولا ترسلو رسائل صوتيه لتسهيل الرد عليكم.
ودمتم بخير. 🤍

أدمن : محمد الصيفي

7 months, 4 weeks ago

شفت خطأ شائع وحبيت اوضحه
الريبوزيتوري مش المكان المناسب اللي اتعامل فيه مع DTO
يعني ما ينفع عمل الحركة
public IEnumerable GetStudents( ..... )
{
}

الريبوزيتوري بيتعامل مع الدومين مباشرة فالاصح
public IEnumerable GetStudents( ..... )
{
}

وعلى مستوى التطبيق Application Layer او ال Presentation
بيكون مسؤولية ال Service التحويل من Domain Model الي DTO
ويفضل استخدام Mapping Library

We recommend to visit

قناة احمد علي على تيليجرام ( شروحات تقنية ، تطبيقات ، ‏أفلام ومسلسلات ، خلفيات ، و المزيد )

Last updated 1 month ago

يرمز تيليجرام إلى الحريّة والخصوصيّة ويحوي العديد من المزايا سهلة الاستخدام.

Last updated 3 days ago

- بوت الإعلانات: 🔚 @FEFBOT -

- هناك طرق يجب ان تسلكها بمفردك لا اصدقاء، لا عائلة، ولا حتى شريك، فقط انت.

My Tragedy Lies With Those Things That Happen in One Second And Remain

- @NNEEN // 🔚: للأعلانات المدفوعة -

Last updated 3 weeks, 2 days ago