مهندسی نرم افزار خیلی قشنگ تر میشه اگر همه چی ثابت بمونه ولی متاسفانه تغییرات در توسعه نرم افزار خیلی بالاست و این رویای ثابت بودن بیزینس لاجیک شاید تا حد زیادی رویا باشه. شما همیشه باید منتظر تغییرات و اصلاحات اساسی از سمت تیم بیزینس باشید.
اگر از ساختار مناسبی در ابتدای طراحی سیستم خودتون استفاده نکنید و فقط شروع کنید به کد زدن در اینده شکی نکنید توسعه اون نرم افزار دردسر بسیاری خواهد داشت و بفرض اینکه شما دیگه توی اون تیم هم نیستید ولی شکی نکنید دعای خیر تیم پشت سرتان خواهد بود.
یکی از مواردی که توی لینکدین دیدم و خیلی من رو بفکر فرو برد این بود که یه شخصی پستی منتشر کرده بود و بزرگوار فرموده بود که دیزاین پترن ها الکی هستن و تو مصاحبه فقط سوال پرسیده میشه و توی توسعه نرم افزار هیچ استفاده ای ازش نمیشه.
استفاده از دیزاین پترن در توسعه نرم افزار نیازمند یه دانش مناسبه. یعنی صرف حفظ کردن این پترن ها به شما کمک نمیکنه و حتی امکان اشتباه توی استفاده از اون ها خیلی زیاده. یعنی ممکنه شما دیزاین پترنی رو استفاده کنید که بیشتر از اینکه به شما کمک کنه کار توسعه نرم افزار رو براتون سخت میکنه.
تا حالا بهش فکر کردید چرا؟ دلیل اول اینکه شما قبل از استفاده از دیزاین پترن باید با مفاهیم دیگه ی OOP اشنا بشید. یکی از مفاهیمی که خیلی مهمه SOLID هست. اول از همه تسلط خیلی مناسبی نسبت این الگوهای طراحی پیدا کنید. شما تا زمانی که این الگوها رو توی کد خودتون رعایت نکنید هیچ وقت نمیتونید از دیزاین پترن ها درست استفاده کنید و تشخیص درستی داشته باشید که از کدوم دیزاین پترن استفاده کنیم.
مورد بعدی که خیلی توی پیاده سازی و استفاده از دیزاین پترن ها تاثیر داره متا دیزاین پترن ها هستند. متا دیزاین پترن ها توی کتاب Gang of four معرفی شدن و مکمل استفاده از دیزاین پترن ها هستن.
این متا دیزاین پترن ها شامل موارد زیر هستند:
مورد هم بعدی هم توی Gang of four اشاره نشده ولی خیلی کمک تون میکنه YAGNI هست
شما نباید دیزاین پترنی رو در ابتدای مسیر طراحی انتخاب کنید. شما باید با کمک دیزاین پرینسیپل های بالا بتونید اول کلاس های خودتون رو طراحی کنید. شکی نکنید که اگر درست مفاهیم بالا رو درک کنید به دیزاین پترن مورد نظر با توجه به نیاز و ساختار خواهید رسید. در حین اینکه طراحی خود را انجام میدید دیزاین پترن مورد نظر در ذهن شما مجسم میشود.
باز هم تاکید میکنم. دیزاین پترن ها را حفظ نکنید. دیزاین پترن ها رو بخونید ولی حفظ نکنید سعی کنید تسلط بالایی به موارد فوق که ذکر کردم برسید
اگر عمری بود حتما در خصوص موارد بالا مطالبی خواهم نوشت با مثال.