Table of Contents
چرا اصول SOLID در آموزش مهندسی مدرن اهمیت دارد
آموزش مهندسی نرم افزار مدت ها با پر کردن شکاف بین تئوری و عمل آماده صنعت، اصول SOLID ارائه یک چارچوب بتنی برای طراحی سیستم های قابل اطمینان، مقیاس پذیر و قابل آزمایش است. تدریس این اصول به طور موثر فقط در مورد لیست کلمات نیست - آن را در مورد تجهیز دانش آموزان با مدل های ذهنی است که هدایت هر تصمیم طراحی آنها در حرفه خود را زمانی که دانش آموزان داخلی حرکت می کنند، به سادگی به نوشتن برنامه های کاربردی که فقط به نوشتن نرم افزار است که فقط در حال تغییر است که فقط در حال تغییر است که فقط در حال تغییر است.
بنیادها: هر معلمی باید درباره SOLID بداند
قبل از غواصی در استراتژی های تدریس، مهم است که درک مشترکی از هر اصل داشته باشید. پنج دستورالعمل که توسط رابرت سی مارتین در اوایل دهه ۲۰۰۰ معرفی شد عبارتند از:
- اصل مسئولیت (SRP) : یک کلاس باید یک، و تنها یک دلیل برای تغییر.
- باز / Closed Principle (OCP): نهادهای نرم افزار باید برای تمدید باز باشند، اما برای اصلاح بسته شده اند.
- اصل اساسی جایگزین (LSP): زیرنوعها باید برای انواع پایه خود بدون تغییر درستی جایگزین شوند.
- اصل Segregation (ISP): مشتریان نباید مجبور به بسته به رابط هایی که استفاده نمی کنند.
- [[ویرایش] [۱] [۱۰] [۱] [۱۰] [۱] [۱۰] [۱]] [۱۰] [۱] [۱۰] [۱]] [۱۰] [۱] [۱۰] [۱] [۱۰] [۱] [۱۰] [۱] [۱] [۱] [۱] [۱]] [۱] [۱] [۱] [۱] [۱] [۱] [۱] [۱] [۱]] [۱] [۱] [بر [بر [بر [۱] [۱] [بر [۱]]] [بر [بر [۱]]]] [بر [۱]]]]]]]]]]] [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر]]]]]]]]
برای یک شیرجه عمیق تر به تعاریف اصلی، مقاله بنیادی مارتین اصول طراحی و الگوهای طراحی همچنان خواندن ضروری است. بسیاری از مربیان همچنین اشاره می کنند مقاله ویکی پدیا برای یک مرور مختصر.
استراتژی 1: آموزش SOLID از طریق بوی کد و بازسازی
دانش آموزان اغلب با SOLID مبارزه می کنند زیرا مزایای آن بلافاصله در یک کد کوچک قابل مشاهده نیست (یک رویکرد ثابت شده این است که ابتدا کد را معرفی کنید – نقاط رنگی که هر توسعه دهنده تجربه کرده اند، به عنوان مثال، کلاسی که فایل I/O، اعتبار داده ها و ورود به آنها را به عنوان یک نسخه "قبل" نشان می دهد که با این بوها مطابقت دارد؛ به ندرت می توانند به عنوان یک روش های کد گذاری شده و کد نویسی دقیق بپردازند.
آزمایشگاه یادگیری فعال: بازسازی یک کارت خرید
یک کلاس جاوا یا پایتون به نام (FLT:0) را که کل تخفیف را محاسبه می کند، تخفیف می دهد، خلاصه سفارش را تولید می کند و به یک پایگاه داده ذخیره می شود.از دانش آموزان بخواهید تمام مسئولیت ها را فهرست کنند، سپس با هم دوباره به کلاس های جداگانه اضافه کنند: (FLT 1:3)، LLT:2، LLT:3، و .P این کد ملموس را ایجاد می کند.
استراتژی دوم: از آنالوگ های بصری و Metaphors استفاده کنید
اصول انتزاعی در هنگام نقشه برداری به سیستم های آشنا برای SRP DIP، مقایسه یک چاقوی ارتش سوئیس (violates SRP) به مجموعه ای از چاقوهای آشپزخانه اختصاصی (دنبال پرینتر SRP) برای OCP، استفاده از یک طرح رسانه ای که از پلاگین ها پشتیبانی می کند - کاربران کدک های جدید را بدون تغییر کد اصلی اضافه می کنند. LSP می تواند با "مشکل اسکن کلاسیک "Squect-R" آموزش داده شود (به طور مستقل تغییر می کند).
استراتژی 3: گام اول شناسایی اصل
تبدیل به یادگیری در یک بازی رقابتی. ایجاد یک عرشه از کارت (یا یک آزمون دیجیتال) که در آن هر کارت توصیف یک سناریو کد.دانش آموزان مسابقه برای شناسایی که اصل SOLID نقض (یا دنبال) امتیاز جایزه برای پاسخ های صحیح و امتیازات پاداش برای پیشنهاد یک تعمیر.
استراتژی 4: یکپارچه سازی SOLID به دوره های کامل و یا پروژه محور
تمرینات جدا شده مفید هستند، اما اصول SOLID به معنای واقعی هنگامی که در یک سیستم بزرگتر اعمال می شود، طراحی یک پروژه گروه نیم مدت که در آن دانش آموزان یک برنامه چند لایه ای (به عنوان مثال، یک سیستم مدیریت کتابخانه، یک پلت فرم سفارش رستوران) را به طور ناخواسته نیاز دارد که معماری از اصول SOLID پیروی کند و تصمیمات طراحی خود را در نقاط عطف ارزیابی کند.
نمونه میدل: بازسازی DIP
پس از اولین بار، پروژه ممکن است یک رابط (FLT:7) داشته باشد که به طور مستقیم یک را تنظیم می کند، یک الزام برای پشتیبانی از PostgreSQL را معرفی کند، دانش آموزان باید یک رابط (FLT:9:12) را معرفی کنند و آن را از طریق سازنده تزریق کنند: 10LT: این جهش از اصل انتزاعی به نیاز به شهودی، به طور مشابه اگر تیم بعدی نیاز به اضافه کردن ایمیل داشته باشد، می تواند به (F) و یا به یک ISP واحد اعمال کند.
چالش های مشترک و چگونگی غلبه بر آنم
حتی با استراتژی های قوی، دانش آموزان با موانع مواجه هستند، در اینجا اغلب مشکلات و چگونگی رسیدگی به آنها وجود دارد.
چالش: بیش از حد مهندسی
طراحان نوامبر گاهی اوقات اصول را به صورت دگماتیکی به کار می برند، رابط های غیر ضروری و لایه های انتزاعی ایجاد می کنند.به شما یاد می دهند که SOLID یک ابزار است، نه یک کتاب قانون.متوجه داشته باشید که هدف حفظ کننده است و معرفی انتزاع هزینه ای دارد.استفاده از "Rule of Three": تنها زمانی که شما سه یا بیشتر رفتارهای مشابه دارید، مثال هایی را ارائه می دهد که یک رابط کاربری ساده تر از سلسله مراتب بهتر است.
چالش: LSP Confusion
دانش آموزان اغلب LSP را با ایمنی نوع یا پلی مورفیسم به طور کلی برابر می کنند.( Clarify که LSP در مورد زیرمجموعه رفتاری است: یک طبقه نباید پیش شرط ها را تضعیف کند یا شرایط پس از والدین خود را تقویت کند، از سلسله مراتب کلاس مانند (FLT 13) و (FLT:14 ( پنگوئن یک پرنده است اما نمی تواند پرواز کند) استفاده می کند (اگر یک تابع کلاس قطع شده است).
چالش: تفکر انتزاعی
برخی از دانش آموزان در نحو عینی رشد می کنند، اما با انتزاع طراحی، تمرینات برنامه نویسی Pair (با نمودار نمودار) با دانش آموزان، نمودارهای کلاس UML را ترسیم می کنند که وابستگی ها را قبل و پس از استفاده از بازخورد بصری DIP به آنها کمک می کند تا انحراف از ابزارهای کنترل مانند draw.io] [F:1 یا Lucidt برای نمودار مشترک در طول کلاس مفید هستند.
استراتژی های ارزیابی که فراتر از تفاهم است
آزمون های چند گزینه ای سنتی می توانند یادآوری تعاریف را آزمایش کنند اما در عوض، ارزیابی های طراحی که نیاز به تجزیه و تحلیل و سنتز اصول SOLID دارند، قابل سنجش نیستند.
آزمون طراحی
به دانش آموزان یک نمودار کلاس نسبتا پیچیده یا لیست کد که شامل نقض های متعدد SOLID است، از آنها بخواهید تا نقض های خاص را شناسایی کنند، توضیح دهند که چرا آنها مشکل دارند و طرح های بازسازی شده را پیشنهاد می کنند.این آزمون فرمت باز با وضوح بالا بر اساس تصحیح شناسایی و امکان سنجی راه حل پیشنهادی.
Refactoring Portfolios
هر دانش آموز یک نمونه کارها از تمرینات بازسازی که در طول ترم تکمیل شده است را ارائه دهید، آنها باید قبل / بعد کد و یک منطق مختصر برای هر اصل اعمال شده ارائه دهند.این نمونه کارها به یک هنر ملموس تبدیل می شود که می توانند در مصاحبه های شغلی بحث کنند. تشویق بررسی همسالان که در آن دانش آموزان طرح های یکدیگر را نقد می کنند - این مهارت های ارزیابی انتقادی ایجاد می کند.
پروژه های آماری Milestones
به جای یک ارسال نهایی، تیم ها را ملزم به ارسال اسناد طراحی در نقاط کلیدی: معماری اولیه (باید انطباق SOLID را اعلام کند)، پس از اولین بازسازی و کد نهایی، ارائه نقاط روتریک به طور خاص برای استفاده صحیح از هر اصل، نشان می دهد که اگر هیچ کلاس بیش از یک مسئولیت روشن داشته باشد؛ OCP نشان داده شده است که اگر ویژگی های جدید می تواند بدون تغییر کلاس های موجود و کاهش مستمر آن، اضافه شود.
آوردن دیدگاه صنعت به کلاس
سخنرانی های مهمان از مهندسان نرم افزار با تجربه که می توانند داستان های واقعی از شکست ها و موفقیت های SOLID را به اشتراک بگذارند ارزشمند است.اگر مهمانان زنده امکان پذیر نیستند، از مذاکرات ضبط شده یا مطالعات موردی استفاده می کنند.به عنوان مثال، بحث رابرت سی. مارتین "اصول زیست" در YouTube استفاده می کنند [FLT 1] همچنین برجسته می کند که چگونه پروژه های منبع باز بزرگ (برای دانش آموزان استفاده می کنند (برای استفاده از طریق اصول ترکیبی از طریق استفاده از طریق اصول پیوست ابزار React).
نتیجه گیری: ایجاد یک بنیاد جامد برای مهندسان آینده
اصول SOLID یک کار یک مرحله ای نیست، آن نیاز به یک رویکرد داربست دارد - بوی کد درون سازمانی، تقویت با تمرینات بازسازی، عمیق تر با استعاره های بصری، و جامد با یادگیری مبتنی بر پروژه، با حرکت از انزوا از اصول جدا شده به تفکر طراحی جامع، مربیان آماده دانش آموزان برای نوشتن نرم افزار است که مقاومت در برابر استراتژی های آزمون تعریف شده در اینجا، کمک به درک دقیق سیستم های مهندسی، زمانی که آنها را به طور واقعی آماده می کنند.