یکی از گرفتاریهای برنامه نویسها ، سیستمهای قدیمی و Brown Field پروژه ها است. منظور همان Legacy سیستمها است که همه سعی دارند از آن فرار کنند. نگهداری سیستمهای قدیمی اگر با مهارت و تجربه برنامه نویسی همراه نشود، یک شر بزرگ خواهند بود.
به سناریوی زیر توجه کنید.
سیستم 600 سال پیش نوشته شده و الان شرکت A مثلن به یک Log مفصل نیاز ندارد، ولی شرکت B اصلن لاگ نیاز دارد، ولی چون حجم دیتای سنگینی دارد، مایل است Cache داشته باشد. پس در عمل باید موقع Deploy مشخص شود که بر اساس یک Company Name یا چیزی مشابه آن ، هر مشتری سرویس مجزایی را در سورس کد صدا بزند
خوب حالا مشاهده می کنیم که یک سرویس در همان 600 سال پیش نوشته شده و حالا اگر بخواهیم به شکلی احمقانه با این تغییرات برخورد کنیم، باید بروید درون سورس کد و داخل این سرویس شرط بگذاریم که اگر شرکت A است، لاگ هم داشته باش و اگر شرکت B است، بیا Cache داشته باش!. اینطوری 5 تا تغییر بزرگ برای 200 تا مشتری قرار باشد انجام شود، سورس کد و برنامه نویسها و شرکت و مشتریها همه با هم به گااارااااج خواهند رفت!. خوب راه حل چیست ؟. راه حل مثل همیشه، استفاده از مغز میباشد. اینجا است که در مصاحبه های فنی از نیروی سینیور میپرسیم با چه دیزاین پترنهایی کار کرده ای؟. اقلن تیتر وار کانسپت دیزاین پترن ها را بدان دیگه بی انصاف !.
بلد نیست و می آید بیرون تازه فحش هم میدهد که ردم کردند. خوب در سناریو بالا، اگر بدانی Decorator Pattern چی است، با ایجاد چند کلاس مجزا و DI کردن آنها بر اساس شرایطی مثلن یک کلید در appsetting یا خواندن یک مقدار از دیتابیس یا هرچی، به فنای فی الله نخواهی رفت.
یاد گرفتن اینها هم چیزهایی نیست بفرمایید شهرستان بودم و پدرم میلیاردر نبود و امکانات نبود و ویزا کارت نداشتیم و ......
مفت ریخته توی اینترنت !.
باشد که پند گیرید.....