Moustafa Meaily
Moustafa Meaily

@CMPSamurai

11 تغريدة 8 قراءة Jul 02, 2022
بقالي فترة مكتبتش حاجة تيكنيكال فاعذرووني بس اكمني نازل اجازة قريب فعندي شوية وقت و ان شاء الله هرجع اكمل سلسلة Software Architecture Concepts اللي بدات كتابتها من فترة و ده الجزء التامن و هبتدي نتكلم عن ال SOLID principles في ال Object Oriented Design
الاول لازم ابتدي و اقول انك لو جربت تشوف كود مش منظم او زي مبنتريق و نقول Spaghetti كود و حاولت تعمله refactor او تعيد كتابته لازم تبقي عارف ان او اعدت الكتابة او حاولت تنظم الكون من غير متاخد بالك من ال Design best practices فانت كانك بتقلب طبق مكرونة في حلة.
بعد متعيد الكتابة و التنظيم هتكتشف انك في الاخر بقي عندم نفس طبق المكرونة بس شكلة بقي مخلتف و عشان كدة لازم نركز في مباديء ال Software Engineering و ال Object Oriented Design لو عايز النتيجة تبقي مختلفة.
فيه راجل عظيم اسمه Robert C. Martin او بيسموه في الوسط Uncle Bob كتب كتابين مهمين في السوفتوير الاولاني اسمه Clean Code و التاني اسمه Clean Architecture. المباديء اللي اتكلم عنها فيهم شبه بقت standard في صناعة السوفت وير و اكيد سمعت عنها وانت بتحضر لاي انترفيو
الجميل ان المباديء دي و علي عكس حاجات كتير بنذاكرها بس عشان الانترفيو هتحتاج تطبقها في حياتك و في كل كود بتكتبه. المباديء دي ٥ مبادي لما تاخد اول حرف من كل مبدأ فيهم و ترتبهم تطلعلك كلمة SOLID و اتسمت SOLID Principles
ال ٥ SOLID principles دول هما
S - Single-responsiblity Principle
O - Open-closed Principle
L - Liskov Substitution Principle
I - Interface Segregation Principle
D - Dependency Inversion Principle
أول مبدا و هو ال S - Single-responsiblity Principle بيقول ان كل component عندك في السوفتوير لازم يكون له وظيفة واحدة بس و سبب واحد بس انك تحتاج تغيره. مينفعش يبقي عندك component مدرس رياضيات و فرنساوي عقبال متجيب مدرس فرنساوي
لو انت developer وحيد شغال في سوفتوير و من الاخر انت اللي كاتبه من اوله لاخره و فاهم كل حاجة فيه غالبا مش هتحس بالمشكلة دي. بس الواقع بيقول ان اي سوفتوير له معني غالبا بيبقي اكتر من شخص شغالين عليه و بالتالي كل واحد المفروض خبير في جزء معين منه مركز فيه.
لو طبقت المبدء ده هتضمن ان اي تغيير في جزء من الاجزاء دي بيحصل في component منفصل بذاته من غير الحاجة للمس باقي السيستم و كمان هيضمنلك ان كل component له وظيفة واحدة مش بيقول بدورين فتقدر تستغل الوظيفة دي و تبني عليها.
مثال لو class بتحسب فواتير مينفعش تبقي بتطلع الناتج html
لان اول حاجة هتكتشفها انك شوية و ممكن تحتاج ال output بصيغة مختلفة xml مثلا او json و كدة لما ان ال component بيقوم بوظيفتين هتضطر تعدله من غير داعي و ده بيعقد ال system عندك. و بيخلي احتمالية الاخطاء تكتر
البلوج دي بتشرح الموضوع و بتورينا مثال عملي ل function بتحسب ال invoice في ecommerce system و بتورينا ازاي نقدر نطبق المبدأ ده و نعملها refactor بحيث تبقي single responsibility component
blog.cmpsamurai.com
لو عجبك المقال اعمل فولو و ريتويت عشان تتابع باقي السلسلة باذن الله.

جاري تحميل الاقتراحات...