للناس اللي مش فاهمة طيب هحدد نوع اليوزر إزاي، وفاكرين إننا مضطرين برضو نعمل nested if-else عشان نحل المشكلة، كتبتلكم الحل كامل أهو عشان الصورة كاملة تبقى واضحة، بصوا كده : import 'user_type.dart'; void main() async { // stored values that are expected to be returned from an API Map userTypeMap = { 'admin': Admin(), 'marketing': Marketing(), 'sales': Sales(), 'customer': Customer(), 'driver': Driver(), 'guestUser': GuestUser(), }; // the actual value returned from the API String valueFromAPI = 'sales'; // get the user type from the map userTypeMap[valueFromAPI]?.getUserType(); } void getUserType() { userType.getUserType(); }
@@NightDay1 طيب الحمدلله المهم انك استفدت يا صديقي، الموضوع بسيط والله ومرن وحسب كل حالة أو مشكلة هنلاقي حل مناسب، بس الناس بتستسهل ومش عايزه تدور او تفكر او تغير الـ nested if-else
@@OmarAhmedx14 شكراا ياصديقي ع الحل دا هو كويس بس انا عندي نقطه بسيطه أنا أضطريت اعمل create object من كل ال types اللي عندي ومع ذالك انا هستخدم واحد بس كل مره. هي الطريق دي افضل بس ك memory اعتقد مش احسن حاجه ولا اي رأيك بردو. شكراا ليك ع اهتمامك بالكومنتس👍
الطريقة اللي حضرتك شرحتها لا تنفع إلا في حالات من هذا النوع ، لكن ما يزال استخدام if ضروري و لا غنى عنه لأي مبرمج.. if من أهم البنى داخل أي كود.. على العموم شكراً لك و تسلم على المجهود اللي حضرتك بذلته..
اكتر حاجة ممكن تفيد الواحد في التعلم هي لما اشوف المثال الخطأ اعرف ايه المشكلة وليه هي مشكلة وبعدها تعرفني الحل والشكل السليم شكرا يا هندسة كتر من الفيديوهات دي 😄
@user-lt5yu6wx3n وعليكم السلام ورحمة الله وبركاته، طيب بما انك واخد مسار ال php يبقي اكيد هدفك تشتغل في الويب وتحديدآ back-end فأنا هقولك من وجهه نظري الشخصية والطريق الي انا مشيت فية ونفع معايا، - مبدئيآ اعرف اساسيات ال php كويس وطالما عارف mysql يبقي اعمل مشروع بسيط كتطبيق علي php + mysql ، اختار blog مثلا مش لازم حاجات معقدة - بعد التطبيق علي المشروع اتعلم ال oop كويس جدا ولو متعرفش اية هي oop اعتبرها طريقة تانية بتكتب بيها الكود - بعد ما تتعلم oop طبق علي مشروع بإستخدام ال oop + mysql او تحول المشروع الي عملتة مسبقآ لل oop - بعدها خد فكرة عن الsolid principles مش لازم تتعنق بشكل كبير في البداية بس أفهمها من غير حرق وقت كبير فيها ومع الوقت هتلاقي نفسك بتستخدمها في اكتر من حالة حسب مشروعك - نفس الموضوع خد فكرة عن ال design patterns بدون تعمق لان التعمق فيها ممكن يعقدك شوية كحد مبتدئ ومع الوقت هتعرف اية ال design pattern المناسب لشغلك وتطبقة - خطوة اختيارية لكني بفضلها، اتعلم mvc design pattern ودة عبارة عن design pattern مشهور جدا كتير من ال frameworks قائمة علية، اختصار ل m = model المسؤول عن التواصل مع قاعدة البيانات، v = view المسؤول عن العرض ، c = controller الي بيكون فية المنطق البرمجي كلة او العقل المدبر زي ما بيسموة، واعمل مشروع بناء علي ال mvc لو قدرت - نيجي للخطوة الاخيرة وهي تعلم اطار عمل framework وهيكون قدامك خيارين اما laravel اما سيمفوني هم الاشهر، بالنسبة لمصر والدول العربيه كلها الاشهر هو لارافيل، بالنسبة لاوربا لارافيل مطلوب بردة لكن سيمفوني اكتر شوية وبردة ابحث وشوف بنفسك جايز الوضع يكون اتغير، وبردة خليك عارف انك لو مش واخد الاساسيات فمش هتعرف تعلي في شغلك بشكل كويس الكلام الي بقوله دة مشروح علي قنوات - elzero web school - eraaSoft - php anonymous وغيرهم كتير، معلش طولت لكني بحاول اقولك الي اعرفة والي نفع معايا ووصلني لمرحلة معقولة الحمد لله بالتوفيق
اعتقد if else ابسط من الحل الي انت قدمته واعتقد انه من الابسط هو اني اخلي المتغيرات في قاماوس واعملها for loop , ولكن جايز حلك افضل علي المدي البعيد من البرمجة الكائية بحيث تتيح ليك التعديل في كل عنصر علي حدي والتعديل فيه بشكل مفصل .
بس هو هنا ما استخدمش الستراتيجي لأنو ماستعملش الكومبوزيشن وانما استعمل الإنهيريتينس، نقدر نقول انو كان يبقى الحل احسن لو استعمل الستراتيجي ديزاين باترن بدل ما يعتمد فقط على المبادئ الأساسية في البرمجة الكائنية
ربنا يبارك فيك يا بشمهندس و يجزيك عن مجهودك و تعبك كل خير أنا لسه مبتدئ و ارجوا منك سعة صدرك للحل بتاعي اللي اتعملته منك برضه بعد ما عملت ال abstract class و ال implementations الخاصة بيها قدرت اني اعمل instantiation و بعدها اعمل call لل method و اسمها getUserType الكود في ال main كان من سطرين زي كده في ال reply . الفكرة انا عاوز اعرف أهمية ال function عند حضرتك جوه ال main و احنا بنقدر نوصل للنتيجة من غيره هكتب الكود في reply عشان يظهر مظبوط
انا كنت بستخدم دايما الحل ده وانا معرفش ان ده مبدا من مابدئ ال SOLID Principles الباشمهندس محمد ابو هدهود كان دايما موعدنا علي الطريقة دي في عمل المشاريع وبعد كده بقيت بستخدم نفس الاسلوب لاكن الفديو عظمة وشرحك حلوو اوي ❤❤
انا للاسف اقدر اقولك بكل ثقه ان الكلام دا غلط بشكل كبييير جدا و تبعياته على ال performance حاجه سيئه جدا جدا جدا الكودين فيهم نفس المشكله بتاعة التاركند لان لو اى حد نسيى يضيف كلاس كامل هيحصل نفس المشكله و هياخد ال base implementation زيه زى ال if statement انته عملت نفس المشكله بالظبط بس بشكل تانى و خدت performance اسوأ و كمان انها موجوده فى شكل class بقت مش بتوحى انك بتعمل اختيار اكتر بدل ال if statement اللى بتعمل jmb instruction انته عملت virtual function و دى هتعمل pointer derefrencing مرتين و function call اتمنى تشوف الفيديو دا يوضحلك مشاكل ال OO و ال SOLID ua-cam.com/video/tD5NrevFtbU/v-deo.html دا واحد من احسن ال SW Engineers فى العالم و جيم Developer بخبره كبيره جدا
"دا واحد من احسن ال SW Engineers فى العالم و جيم Developer بخبره كبيره جدا "This is irrelevant who cares about someone we care about the ideas and why he's presenting them, but I get the point why u mentioned this but this is a common appeal to authority fallacy I wanted to point out you see hurting performance and bad performance are subjective, what matters the most for your software depends on various parameters is writing code for people who will maintain from various places globally can be the number 1 goal you are after hence why you will see these design patterns and SOLID principles and "clean code" whatever that means mentioned everywhere you are not right while he's the wrong neither the other way around it really always depends if you are looking for performance overall then yes i see why this is bad let's look at NSASA design principles, they don't allow exceptions at all because they value fault tolerance above all
I remember watching this vid when it came out one huge issue I have with it is, then what? what will be the proposed solution then ? we still have the maintainability problem at hand which arguably for most what matter the most, as many code basis ends up being re-written the idea of not providing and alternative is what i have issue with
هل يمكن من غير متبدل driver او customer في function و تعطي نفس نتيجة في console هل يمكن تعملها automatique يعني تعمل طريقة من غير مترجع للكود كل مرة و تغير اسم driver
الثاني الكومبايلر بيعمل vtable عشان يعمل function overloading وفي الruntime بيصير dynamic dispatching بيعمل فتش من الممري لهذا التيبل وقد يحصل cache miss بينما الاول الانستركشن بتنعمل في executed في المعالج بسرعة لانه الانستركشن خلف بعض
@@OmarAhmedx14 صحيح في الواقع الكومنت للناس الا بالغعل عارفة تكتب "كود نظيف" وسهل الصيانة في النهاية البرفورمنس موضوع معقد احيانا اف الس اسرع ونسميه "clean enough to do the job”
طريقتك لا يعلى عليها فلشرح الصراحه بس عندي تعليق بسيط داوقتي انا متفهم الي انت عملتو أنك في حاله انك هتزود عناصر جديده للكود بتاعك انت أشبه بأنك مجرد بتكوبي لكود القديم وتعدل حجات بسيطه بس فلمقابل انت بقى عندك ملف تاني بتديلو الشروط والفانكشن بتاعتك بعدها بتروح تاني عالملف الأساسي عشان تطبع النتيجه فبلتالي لو جينا طبقنا حاجه زي كده على كود اكبر هيبقى بلتالي هياخد وقت اكبر (حتى لو فرق ms مازال اسمو فرق توقيت) عن انو يقراء الداتا بتاعتو كلها وينفذ كل شيء في نفس الملف ممكن اكون غلط وممكن اكون صح بس فلنهايه ده مجرد رئي ومره تانيه اسلوبك العامي في الشرح ده شيء مخلي الشرح لذيذ اكتر استمر وبلتوفيق وفي انتظار ردك❤
@@eslama.hugair1666 يعني أنت شايف الـ nested if-else أحسن من حاجه زي كده ؟ void main() async { // stored values that are expected to be returned from an API Map userTypeMap = { 'admin': Admin(), 'marketing': Marketing(), 'sales': Sales(), 'customer': Customer(), 'driver': Driver(), 'guestUser': GuestUser(), }; // the actual value returned from the API String valueFromAPI = 'sales'; // get the user type from the map userTypeMap[valueFromAPI]?.getUserType(); } void getUserType(UserType userType) { userType.getUserType(); }
@@OmarAhmedx14 I'm not opiniated about it, and don't reject if statements, whatever the devs enjoy doing, and doing best, they should keep doing, unless there is an issue with that, I'm with clean house policies, but still I'm gonna enjoy building it 🍄
طيب الكلاسات اللي حضرتك عملتها ...برده هتشيك ازاي علي نوع ال user ....حتي بعد كل اللي انت عملته علشان اعمل التشيك ...هكتب نفس كود if ...لازم اقارن ب if أو switch برده.
طب لو تحديد النوع هيكون dynamic هنعمل احنا حدد هنا type function انه admin او اي نوع هنعمل ايه لو type nafso dynamic هل كدا هنلجأ factory pattern الي فيه static method بيكون فيها if w else برضو انا بتكلم في عموم بناقش الفكره مع حضرتك
Direct Use of Abstract Classes and Polymorphism: Best for simpler scenarios where the types of objects are known in advance and won’t change frequently. Factory Pattern: Ideal for more complex scenarios where object creation logic is involved, or when the exact type of object to be created depends on runtime conditions. It also makes your code more adaptable to changes and easier to maintain when new types are added.
ممكن اعرفهم في variable وفي النهاية اعمل variable= اي واحد منهم واقوله اطبع قيمة ال variable دي من رأيي مفيش طريقة ثابته لكتابة الكود وكل مبرمج ليه طريقة بتؤدي في النهاية للحاجة المطلوبة منه وكل واحد فاهم الطريقة المثالية اللي هو فاهمها واللي ممكن تبان لغيرة انها عشوائية
للناس اللي مش فاهمة طيب هحدد نوع اليوزر إزاي، وفاكرين إننا مضطرين برضو نعمل nested if-else عشان نحل المشكلة، كتبتلكم الحل كامل أهو عشان الصورة كاملة تبقى واضحة، بصوا كده :
import 'user_type.dart';
void main() async {
// stored values that are expected to be returned from an API
Map userTypeMap = {
'admin': Admin(),
'marketing': Marketing(),
'sales': Sales(),
'customer': Customer(),
'driver': Driver(),
'guestUser': GuestUser(),
};
// the actual value returned from the API
String valueFromAPI = 'sales';
// get the user type from the map
userTypeMap[valueFromAPI]?.getUserType();
}
void getUserType() {
userType.getUserType();
}
استفدت من هذا التعليق أكثر من الفيديو يمكن 😂😂😂😂.
لأني توني اعرف ان الماب يصير مع الاوبجكت.
@@NightDay1
طيب الحمدلله المهم انك استفدت يا صديقي، الموضوع بسيط والله ومرن وحسب كل حالة أو مشكلة هنلاقي حل مناسب، بس الناس بتستسهل ومش عايزه تدور او تفكر او تغير الـ nested if-else
@@OmarAhmedx14
شكراا ياصديقي ع الحل دا
هو كويس بس انا عندي نقطه بسيطه أنا أضطريت اعمل create object من كل ال types اللي عندي ومع ذالك انا هستخدم واحد بس كل مره.
هي الطريق دي افضل بس ك memory اعتقد مش احسن حاجه ولا اي رأيك بردو.
شكراا ليك ع اهتمامك بالكومنتس👍
@@abdallahsamir8120
حضرتك فاهم الكلام اللي انت بتقوله ؟
@@OmarAhmedx14 ف انهي جزئيه تقصد، لو ف حته الماب ف دا افضل من ناحيه maintainability لكن performance اعتقد مش افضل حاجه لو الاوبجيكت بياخد resources كتير وممكن حضرتك تصححلي بردو🙏
شكرا شكرا
شرحت الموضوع بطريقة رائعة ووصلت المعلومة بشكل ممتاز
انا مبرمج لارافل وفهمت منك بشكل رائع.. أحسنت 👍
شرح جميل ما شاء الله .. as a test automation engineer استفدت جداا الحمد لله
جميلة الطريقة الي توضح فيها المشكلة و انه يكون smell code بعدين تبين كيف تستخدم abstract لحل المشكلة
شرح ممتاز لموضوع مهم جدا جزاك الله الف خير
الطريقة اللي حضرتك شرحتها لا تنفع إلا في حالات من هذا النوع ، لكن ما يزال استخدام if ضروري و لا غنى عنه لأي مبرمج.. if من أهم البنى داخل أي كود..
على العموم شكراً لك و تسلم على المجهود اللي حضرتك بذلته..
كلام سليم ١٠٠٠٪ والأهم شرحك قمة في الروعة الحقيقة ربنا يبارك فيك ويزيدك علم
بارك الله فيك احسنت يا هندسه
اكتر حاجة ممكن تفيد الواحد في التعلم هي لما اشوف المثال الخطأ اعرف ايه المشكلة وليه هي مشكلة وبعدها تعرفني الحل والشكل السليم شكرا يا هندسة كتر من الفيديوهات دي 😄
بسم الله ما شاء الله ... طريقتك محترمه فى الشرح .. بس ممكن نقول ببساطه ده الفرق بين ال
Structural mode
&
Object Oriented Programing
اعجبتني هذا الفيديو كثيرا شكرا جزيلا اتمنى ان تقوم بالمزيد من هذه الفيديوهات التي تشرح معظم المشاكل او الاخطاء الذي يقوم بها developers
رغم حبي تعلم البرمجة والاطلاع للمبرمجين وطرق برمجتهم الا اني انبسط بشرحك وتفهيمك للمفهوم الاساسي بغض النظر ع اللغة المستخدمة
االله عليك ياريت تكتر من النوع ده من الفيديوهات و ياريت لو تعملهم فى playlist
اتفق 100%
جميل جدا
ياريت افكار زي دي كتير وبنفس الفكرة علشان اللي شغال بتكنولجي تانية غير فلاتر يستفيد
على الرغم من انا مبمج بلغة البايثون الا ان تعلمت ان oop في بايثون شي يسهل الامور اكثر و ينظف الكود اكثر
شكرا لك
والله يا صاحبي انا شوفت ناس كتير بتشرح برمجة بس انت اسلوبك مميز فاستمر من فضلك. اسلوبك جميل و بيوصل بسهولة
شرح جميل وبسيط ربنا يوفقك
ياريت سلسلة oop كاملة
ua-cam.com/video/jz8JVznL2HA/v-deo.html&pp=iAQB
جامد يا هندسة♥
البداية بكل تفاصيل وحجم المشكلة وانتقلت للحل جامد جامد بجد🏅
ربنا يزيدك علم نافع يارب
الله ينور عليك ي عمر ي جامد
محتاجين Playlist تكون فيها افكار عامة تفيد المبتدئين ياريت
انا شغال باك ايند بال PHP والفيديو افادني جدا, رغم اني عارف المفهوم لكن مكنتش بطبقة كتير في مشاريعي
جزاك الله خير علي التذكير
السلام عليكم اخى انا باخد كورس php
ومعايا كورس my SQL
اريد ان اعرف الخطوة التالية فى التعلم
@user-lt5yu6wx3n
وعليكم السلام ورحمة الله وبركاته،
طيب بما انك واخد مسار ال php يبقي اكيد هدفك تشتغل في الويب وتحديدآ back-end فأنا هقولك من وجهه نظري الشخصية والطريق الي انا مشيت فية ونفع معايا،
- مبدئيآ اعرف اساسيات ال php كويس وطالما عارف mysql يبقي اعمل مشروع بسيط كتطبيق علي php + mysql ، اختار blog مثلا مش لازم حاجات معقدة
- بعد التطبيق علي المشروع اتعلم ال oop كويس جدا ولو متعرفش اية هي oop اعتبرها طريقة تانية بتكتب بيها الكود
- بعد ما تتعلم oop طبق علي مشروع بإستخدام ال oop + mysql او تحول المشروع الي عملتة مسبقآ لل oop
- بعدها خد فكرة عن الsolid principles مش لازم تتعنق بشكل كبير في البداية بس أفهمها من غير حرق وقت كبير فيها ومع الوقت هتلاقي نفسك بتستخدمها في اكتر من حالة حسب مشروعك
- نفس الموضوع خد فكرة عن ال design patterns بدون تعمق لان التعمق فيها ممكن يعقدك شوية كحد مبتدئ ومع الوقت هتعرف اية ال design pattern المناسب لشغلك وتطبقة
- خطوة اختيارية لكني بفضلها، اتعلم mvc design pattern ودة عبارة عن design pattern مشهور جدا كتير من ال frameworks قائمة علية، اختصار ل m = model المسؤول عن التواصل مع قاعدة البيانات، v = view المسؤول عن العرض ، c = controller الي بيكون فية المنطق البرمجي كلة او العقل المدبر زي ما بيسموة، واعمل مشروع بناء علي ال mvc لو قدرت
- نيجي للخطوة الاخيرة وهي تعلم اطار عمل framework وهيكون قدامك خيارين اما laravel اما سيمفوني هم الاشهر، بالنسبة لمصر والدول العربيه كلها الاشهر هو لارافيل، بالنسبة لاوربا لارافيل مطلوب بردة لكن سيمفوني اكتر شوية وبردة ابحث وشوف بنفسك جايز الوضع يكون اتغير،
وبردة خليك عارف انك لو مش واخد الاساسيات فمش هتعرف تعلي في شغلك بشكل كويس
الكلام الي بقوله دة مشروح علي قنوات
- elzero web school
- eraaSoft
- php anonymous
وغيرهم كتير، معلش طولت لكني بحاول اقولك الي اعرفة والي نفع معايا ووصلني لمرحلة معقولة الحمد لله
بالتوفيق
@@eslammostafa1247 شكرا جداً
شفت الفيديو بالصدفه وحبيت الشرح صراحه يعني حبيت القناه يعني سويت اشتراك
ورح اطلع علي سلسلة كتاب clean code 🌹🌹🌹🌹
أنا ممتن لك أخي ربنا يباركلك في شغلك أخوك من المغرب
ده شغل قواعد بيانات مش UI
يعني دول و خمسمية قدهم يتشالوا في self-referecig table وكل نوع مربوط بجدول الAddress Book اللي شايل تفاصيل النوع
اعتقد if else ابسط من الحل الي انت قدمته واعتقد انه من الابسط هو اني اخلي المتغيرات في قاماوس واعملها for loop , ولكن جايز حلك افضل علي المدي البعيد من البرمجة الكائية بحيث تتيح ليك التعديل في كل عنصر علي حدي والتعديل فيه بشكل مفصل .
شرحك رهيب جداً استمر خيو ❤
Strategy Design Pattern
كما يقول الكتاب
تسلم ايدك على التذكير
الي حابب يقرا عن افكار مشابهة كتاب ال
head first design pattern
جميل جدا
بس هو هنا ما استخدمش الستراتيجي لأنو ماستعملش الكومبوزيشن وانما استعمل الإنهيريتينس، نقدر نقول انو كان يبقى الحل احسن لو استعمل الستراتيجي ديزاين باترن بدل ما يعتمد فقط على المبادئ الأساسية في البرمجة الكائنية
@@محششأذكىمنك
هو دا مش يعتبر فاكتوري ؟؟
اللهم بارك اسلوبك جميل جدا في الشرح و مش بحس بالوقت وانا بتفرج
الله ينور عليك يا ريس و الله انت حببتني في الشغلانه اكتر و اكتر ببساطه شرحك
هي دي نوعية الفيديوهات اللي احنا محتاجينها
شكرا ليك
تم لاشتراك في القناة مع احلى لايك للفيديو ❤
ما شاء الله
شرح ممتاز
If else ابسط و الله
لأ خالص والله، مش أبسط ولا حاجة، جرب كده يبقى مشروع شغال ويكبر منك، واملاه كله if-else ، وابقى اتفرج عليه.
@@OmarAhmedx14 array احسن
@@OmarAhmedx14 typedef enum UserType {
UserType_admin,
UserType_marketing,
UserType_sales,
UserType_customer,
UserType_deiver,
UserType_guestUser
} UserType;
char *GetUserTypeStrings[] = {
[UserType_admin] = "User is an admin",
[UserType_marketing] = "User is a marketing",
[UserType_sales] = "User is a sales",
[UserType_customer] = "User is a customer",
[UserType_deiver] = "User is a deiver",
[UserType_guestUser] = "User is a guest user",
};
void getUserType(UserType userType)
{
printf(GetUserTypeStrings[userType]);
}
Amazing explanation, Thanks from morocco 👏
كل الشكر و التقدير لحضرتك ، تفكير لماح . لدي سؤأل من فضلك ما هو بالصبط اداة Copilot اللي عم تستخدمها ؟ مع الشكر
ما شاء الله عليك مستر عمر انا بدعى لحضرتك ديما وبحب حضرتك جدا واتعلمت منك حاجات كتير جزاك الله كل خير
عظمه ربنا يجازيك خير
انت بتحلف كتير وده غلط ❤
ممكن تضيف علي ال abstract class انه يكون فيه attribute لل enum بحيث لو عايز تعمل مقارنه مثلا او تاكد من الصلاحيه
والله انت راجل جامد ❤
good explanation,I think this is strategy design pattern
لا مش ناوي ابطل. بجد اكلمك و الله
ههههههههههههههههههههههههههههههههههههههههههههههههههههههههههههههههههههههههههههههههههههههههههههه
The best one of all, continue discussing best practices.
15 دقيقية لخصت oop الله يفتح عليك و يزيدك 🤍🤍🤍🤍
هذا نوع من انواع behavioral design pattern اسمو strategy
بس باقي حته ال input كيف بحدده؟.
اذا فيه مثلا input = driver.
كيف الكود راح يحدده؟
شوف الـ pinned comment تحت الفيديو دلوقتي
يعم انت الوحيد اللى مش ببص على الوقت ونا بسمع فيديو ليك
اللي عملته اسمه Interface وهذا مش بديل لل If كل اشي اله استخدامه ، في طريقة ثانية مستخدمة جدا اسمها Inheritance وبالعادة بتكون المشاريع مكس بينهم
@@anasmahfouz3946
معاك حق
اللهم بارك فيديو جميل جدا
تسلم يا هندسه اتمنى تكتر من الفيديوهات
ربنا يبارك فيك يا بشمهندس و يجزيك عن مجهودك و تعبك كل خير
أنا لسه مبتدئ و ارجوا منك سعة صدرك للحل بتاعي اللي اتعملته منك برضه
بعد ما عملت ال abstract class و ال implementations الخاصة بيها
قدرت اني اعمل instantiation و بعدها اعمل call لل method و اسمها getUserType
الكود في ال main كان من سطرين زي كده في ال reply .
الفكرة انا عاوز اعرف أهمية ال function عند حضرتك جوه ال main و احنا بنقدر نوصل للنتيجة من غيره
هكتب الكود في reply عشان يظهر مظبوط
abstract class UserType {
void getUserType();
}
class Admin implements UserType {
@override
void getUserType() {
print('This is an admin');
}
}
class GuestUser implements UserType {
@override
void getUserType() {
print('This is a guest user');
}
}
Future main() async {
final newUser = GuestUser();
newUser.getUserType();
}
انا كنت بستخدم دايما الحل ده وانا معرفش ان ده مبدا من مابدئ ال SOLID Principles الباشمهندس محمد ابو هدهود كان دايما موعدنا علي الطريقة دي في عمل المشاريع وبعد كده بقيت بستخدم نفس الاسلوب لاكن الفديو عظمة وشرحك حلوو اوي ❤❤
انت خلصت خريطه ابوهدهود
@@user-mb4ub6hb6i لاء بس معاه في كورس 19
ربنا يباركلك شرح ممتاز
محلاها من صدفة كنت شغال ع بروجكت وعندي نفس الكود بالضبط وجالي اشعار ... ربي يبارك فيك يا مهندس
@@muteealjabri ع ايش من مشروع كنت شغال علية
مشروع شخصي
رائع شكرا لك استاذ 🌹
انا للاسف اقدر اقولك بكل ثقه ان الكلام دا غلط بشكل كبييير جدا و تبعياته على ال performance حاجه سيئه جدا جدا جدا
الكودين فيهم نفس المشكله بتاعة التاركند لان لو اى حد نسيى يضيف كلاس كامل هيحصل نفس المشكله و هياخد ال base implementation زيه زى ال if statement
انته عملت نفس المشكله بالظبط بس بشكل تانى و خدت performance اسوأ و كمان انها موجوده فى شكل class بقت مش بتوحى انك بتعمل اختيار اكتر
بدل ال if statement اللى بتعمل jmb instruction انته عملت virtual function و دى هتعمل pointer derefrencing مرتين و function call
اتمنى تشوف الفيديو دا يوضحلك مشاكل ال OO و ال SOLID
ua-cam.com/video/tD5NrevFtbU/v-deo.html
دا واحد من احسن ال SW Engineers فى العالم و جيم Developer بخبره كبيره جدا
معاك حق
انت صح
@@OmarAhmedx14
قبل ما تتريق خش شوف الفيديو على الاقل
انته عامل فيديو على الناس اللى فاكره نفسها صح على طول 😂
@@Ahmed-S-Lilah
مين قال إني بتريق ؟
ومين قال إني فاكر نفسي صح ؟
Bro, chill
"دا واحد من احسن ال SW Engineers فى العالم و جيم Developer بخبره كبيره جدا "This is irrelevant who cares about someone we care about the ideas and why he's presenting them, but I get the point why u mentioned this but this is a common appeal to authority fallacy I wanted to point out
you see hurting performance and bad performance are subjective, what matters the most for your software depends on various parameters is writing code for people who will maintain from various places globally can be the number 1 goal you are after hence why you will see these design patterns and SOLID principles and "clean code" whatever that means mentioned everywhere
you are not right while he's the wrong neither the other way around
it really always depends
if you are looking for performance overall then yes i see why this is bad
let's look at NSASA design principles,
they don't allow exceptions at all because they value fault tolerance above all
I remember watching this vid when it came out one huge issue I have with it is, then what? what will be the proposed solution then ? we still have the maintainability problem at hand which arguably for most what matter the most, as many code basis ends up being re-written
the idea of not providing and alternative is what i have issue with
تسلم يا هندسة عايزين فيديو للenum بقي
بصراحه جميل جدا ربنا يباركلك
هل يمكن من غير متبدل driver او customer في function و تعطي نفس نتيجة في console هل يمكن تعملها automatique يعني تعمل طريقة من غير مترجع للكود كل مرة و تغير اسم driver
انت انسان رائع ياهندسة
انا دلوقت خلصت لغة جافا وعملت مشروعين عليها هل ينفع اتعلم لغة دارت بفريم ورك فلاتر وعايز اعرف الحاجات اللي مش هرف اعملها ب cross واعملها ب native
Keep going bro 💪miss you and all the team
الله يجزيك الخير
من بعد اذنك شو اسم الاضافة الخاصة ب Ai ضمن ال vscode يلي حضرتك مستخدمها
الاول اسرع performance wise
الثاني الكومبايلر بيعمل vtable عشان يعمل function overloading وفي الruntime بيصير dynamic dispatching بيعمل فتش من الممري لهذا التيبل وقد يحصل cache miss بينما الاول الانستركشن بتنعمل في executed في المعالج بسرعة لانه الانستركشن خلف بعض
لذلك "احيانا" لا مش عاوز ابطل if else 😄 اذا بكتب كود مهم السرعة فيه وهو hot path
Always depends
@@OmarAhmedx14 صحيح في الواقع الكومنت للناس الا بالغعل عارفة تكتب "كود نظيف" وسهل الصيانة في النهاية البرفورمنس موضوع معقد احيانا اف الس اسرع ونسميه "clean enough to do the job”
عظمة كالعادة يا صديقي ♥♥
برنس
In this scenario, I think it is better to follow the strategy design pattern so next time favor composition over inheritance 😁
فيديو مفيد جدا ..استمر يا غالى ♥️
6:32 وإدخال الكلمات الإنجليزية للعربية أثناء الحديث: مؤزي للسمع!
معاك حق
اول فيديو بشوفو الك
طريقتك لا يعلى عليها فلشرح الصراحه بس عندي تعليق بسيط
داوقتي انا متفهم الي انت عملتو أنك في حاله انك هتزود عناصر جديده للكود بتاعك انت أشبه بأنك مجرد بتكوبي لكود القديم وتعدل حجات بسيطه بس فلمقابل انت بقى عندك ملف تاني بتديلو الشروط والفانكشن بتاعتك بعدها بتروح تاني عالملف الأساسي عشان تطبع النتيجه فبلتالي لو جينا طبقنا حاجه زي كده على كود اكبر هيبقى بلتالي هياخد وقت اكبر (حتى لو فرق ms مازال اسمو فرق توقيت) عن انو يقراء الداتا بتاعتو كلها وينفذ كل شيء في نفس الملف
ممكن اكون غلط وممكن اكون صح بس فلنهايه ده مجرد رئي ومره تانيه اسلوبك العامي في الشرح ده شيء مخلي الشرح لذيذ اكتر استمر وبلتوفيق وفي انتظار ردك❤
لو سمحت يا باشمهندس معلش ممكن فيديو عن refresh token من فضلك🚨🚨
اعرف typeScript ومليش علاقة ب dart واستفدت كثير شكرا
الله يعطيك العافية .
ازاي عملنا فانكشن واستدعيناه قبل ما نعمله من غير declaration للفانكشن ..
جزاك الله خيرا
كنت عملت switch عوض abstract class
Readability VS performance.
بارك الله فيك
بطلتها زمان وبكتب مشاريع كاملة بدونها
دائماً مبدع اكمل
عظمه على عظمه يا هندسه ❤
اي اللغه اللي حضرتك مستخدمها
ايه الجمال دا
باش مهندس اذا انا اريد ايش معرفة التطبيق او الموقع بايش من لغة تم تطويرة كيف اعرف ذلك ؟
بحبها ومش قادر ابطلها 🤣
btw, the if statment is better than using enums or object accessing
we should avoid poor strcturing and code design
not necessary using if or not!!
@@eslama.hugair1666
يعني أنت شايف الـ nested if-else أحسن من حاجه زي كده ؟
void main() async {
// stored values that are expected to be returned from an API
Map userTypeMap = {
'admin': Admin(),
'marketing': Marketing(),
'sales': Sales(),
'customer': Customer(),
'driver': Driver(),
'guestUser': GuestUser(),
};
// the actual value returned from the API
String valueFromAPI = 'sales';
// get the user type from the map
userTypeMap[valueFromAPI]?.getUserType();
}
void getUserType(UserType userType) {
userType.getUserType();
}
@@OmarAhmedx14
I'm not opiniated about it, and don't reject if statements, whatever the devs enjoy doing, and doing best, they should keep doing,
unless there is an issue with that, I'm with clean house policies, but still I'm gonna enjoy building it 🍄
@@eslama.hugair1666
معاك حق انت صح 👍🏻
@@OmarAhmedx14 بالعكس انتا الي صح, بس انا اسف اني مقلتش شكرا ليك على الوقت الي تشارك فيه معلومات حلوه معانا
شكرا 🙏
إشعار يرفع هرمون السعادة
حل رائع.
لدي كود كتبته قديما إستخدمت فيه if else ١٧ مرة.
ولكن الكسل منعني من تعديل الكود.😂😂
ذا مفهوم ال open/close principle
صح ؟
الجواب الدقيقه
13:06
شكرا
حلو اوي يا زعيم
الحلقة هي مناسبة تكون كمثال بكورس OOP
طيب الكلاسات اللي حضرتك عملتها ...برده هتشيك ازاي علي نوع ال user ....حتي بعد كل اللي انت عملته علشان اعمل التشيك ...هكتب نفس كود if ...لازم اقارن ب if أو switch برده.
@@bahaagamal4995
شوفت الكومنت المثبت ؟
تصدق إني لسه مجمع إني حضرت مع حضرتك سيشن قبل كده مع MSP😅
لما قولت Dart عرفتك علطول😂😂
بس بجد عاش يا هندسة👏❤
طيب سوال مش عارف انا فهمت غلط ولا لا ؟ازاي abstract class وانت عامل implement !!!!!
جميل جزاك الله خيرا
طب مش كدا هتضطر تعمل اف ستيتمنت كمان عشان تحدد ايش كل نوع شو بدو يعمل ؟
شوف الكومنت المثبت
ربنا يباركلك
طب لو تحديد النوع هيكون dynamic هنعمل احنا حدد هنا type function انه admin او اي نوع هنعمل ايه لو type nafso dynamic هل كدا هنلجأ factory pattern الي فيه static method بيكون فيها if w else برضو انا بتكلم في عموم بناقش الفكره مع حضرتك
Direct Use of Abstract Classes and Polymorphism: Best for simpler scenarios where the types of objects are known in advance and won’t change frequently.
Factory Pattern: Ideal for more complex scenarios where object creation logic is involved, or when the exact type of object to be created depends on runtime conditions. It also makes your code more adaptable to changes and easier to maintain when new types are added.
كل حالة وليها حلها، اللي بالتأكيد كتر الـ if-else مش كويس فيه
بحبك ❤❤
ممكن اعرفهم في variable وفي النهاية اعمل variable= اي واحد منهم واقوله اطبع قيمة ال variable دي
من رأيي مفيش طريقة ثابته لكتابة الكود وكل مبرمج ليه طريقة بتؤدي في النهاية للحاجة المطلوبة منه وكل واحد فاهم الطريقة المثالية اللي هو فاهمها واللي ممكن تبان لغيرة انها عشوائية
جامد ❤
هل كنا نقدر نحل نفس المشكلة بlook up table ؟
مثال رائع😮
مهم جدا
استمر بالنشر عن هذه الافكار ❤