ضد الگو در توسعه نرم افزار چیست؟

ترجمه و تالیف : فاطمه شیرزادفر
تاریخ انتشار : 12 خرداد 99
خواندن در 2 دقیقه
دسته بندی ها : طراحی وب

در این مقاله از راکت قصد دارم درباره ضد الگو‌ها در توسعه‌ نرم افزار صحبت کنم. 

ساختار خوب یک نرم افزار برای گسترش و نگهداری یک سیستم ضروری است. توسعه نرم افزار یک فعالیت بی‌نظم و پراکنده است، بنابراین ساختار اجرای سیستم‌ها از ساختار برنامه‌ریزی شده متناسب با معماری، تجزیه و تحلیل و طراحی، منحرف می شود. تغییر ساختار نرم افزار، یک روش مؤثر برای بهبود ساختار نرم افزار است.

همیشه در هر کاری سعی کنید خودتان را به چالش بکشید و از خودتان انتقاد کنید تا بتوانید پیشرفت داشته باشید،‌ یک برنامه‌نویس خوب هم باید از همین الگو پیروی کند و این کار را انجام دهد. ضد الگوها یا Anti Patterns، یک سری روند و راه نامناسب هستند که وقتی یک برنامه‌نویس قصد دارد مسئله‌های مختلف را حل کند، آن‌ها را پیاده‌سازی می‌کند و معمولا همین  الگو‌ها و روندها است که باعث ایجاد مشکل در ساختار برنامه می‌شود.

ساختار خوب یک برنامه به توسعه‌پذیری و نگهداری آن کمک می‌کند، اما متاسفانه می‌بینیم که اکثراً  سرعت تحویل پروژه را به معماری نرم افزار ترجیح می‌دهند و برای ساخت یک برنامه بسیار بی‌نظم کار می‌کنند، همچنین بسیار زیاد می‌بینیم که شرکت‌ها برای کاهش هزینه‌های خودشان از برنامه‌نویس‌های بدون تجربه استفاده کرده و از بسیاری از مراحل توسعه نرم افزار مثل تست و … چشم‌پوشی می‌کنند؛(البته به کار گیری نیروهای تازه‌کار بسیار خوب است، اما به شرط وجود نیروهای باتجربه و کار کردن در کنار آن‌ها) این کارها باعث می‌شود که کار بی‌کیفیت از آب دربیاید. به این نکته توجه کنید که هزینه‌ای که در ابتدا برای نوشتن یک برنامه خوب می‌دهید تا کیفیت کارتان را بالا می‌برید، از بسیاری از هزینه‌های شما در آینده جلوگیری می‌کند؛ پس این مسأله را شوخی نگیرید.

اما اگر ما این ضد الگو‌ها رو بشناسیم، می‌فهمیم که چه الگویی برای ساخت یک برنامه اشتباه است! مثلا اگر یک برنامه نویس، کلاسی بنویسد، که کارهای زیادی داخل این کلاس انجام شود به طور مثال آپلود عکس، دسترسی دادن به کاربران، مدیریت خطا، نمایش تصویر و اعتبار سنجی، منجر به یه ضد الگو به اسم Blob) God Object) می‌شود.

مثال:

class GodObject {  
    function PerformInitialization() {}
    function ReadFromFile() {}
    function WriteToFile() {}
    function DisplayToScreen() {}
    function PerformCalculation() {}
    function ValidateInput() {}
    // and so on... //

 این باعث می‌شود که به طور مثال با تغییر یک قسمت از یک تکه کد در برنامه، نیاز به تغییر قسمت‌های دیگر در برنامه باشد؛ این کار در توسعه یک نرم افزار قابل قبول نیست و ممکن است برنامه‌نویس نتواند از کدهای برنامه، استفاده مجدد (Reuse) کند.همچنین بارگزاری این کلاس در حافظه اصلی (RAM) می‌تواند حجم زیادی از فضای RAM را اشغال کند.

یکی دیگر از این ضدالگو‌ها Lava Flow  یا جریان گدازه‌ها است. شاید شما هم با این مسأله برخورد کرده‌اید که برنامه‌نویسان در هنگام کار روی یک پروژه از روش‌های بسیار پیچیده استفاده می‌کنند، چرا که فقط روی خروجی آن متمرکز هستند و به مسائل دیگر اهمیتی نمی‌دهند؛ اما هنگامی که برنامه‌نویسان جدیدی وارد پروژه شوند از این نوع کدنویسی شوکه می‌شوند، درواقع آن‌ها اصلاً از چیزی که نوشته شده سر در نمی‌آورند یا اگر هم بفهمند، بسیار زمان خواهد برد.

 از طرفی این کدها دستکاری هم نمی‌شوند، زیرا همه ترس دارند که با تغییر قسمتی از کدها،‌ کل پروژه از کار بیفتد. رفته‌رفته جای این کدها محکم می‌شود و ضد الگو Lava Flow  یا جریان گدازه‌‌ها رخ خواهد داد. جای این گدازه‌ها بسیار محکم است و کسی هم قادر به تغییر آن نیست؛ اگر که برنامه نویسی اصلی نباشد.

راه جلوگیری از این ضدالگو،‌پیروی از یک روش استاندارد برای کدنویسی است! ( ساده و قابل فهم کد بنویسید، پیچیده کدنویسی کردن هنر نیست.)

برخی دیگر از این ضد الگو‌ها به شرح زیر هستند :

Death by Planning
Big Ball of Mud
Boat Anchor
Golden Hammer
Gold Plating

بنابراین شما باید سعی کنید برای پیشرفت کردن و حرفه‌ای شدن در این حوزه، اصولی کار کنید و این نکات را رعایت کنید؛ همچنین به کیفیت کدی که تولید می‌کنید اهمیت زیادی بدهید. در آخر امیدوارم این مقاله مورد استفاده شما قرار بگیرد.

گردآوری و تالیف فاطمه شیرزادفر
آفلاین
user-avatar

تجربه کلمه‌ای هست که همه برای توصیف اشتباهاتشون ازش استفاده میکنن، و من همیشه دنبال اشتباهات جدیدم! برنامه‌نویس هستم و لینوکس‌ کار

دیدگاه‌ها و پرسش‌ها

برای ارسال نظر لازم است ابتدا وارد سایت شوید
هیچ دیدگاهی تا به این لحظه برای این موضوع ثبت نشده است