ضد الگو تجزیه تابعی (Functional Decomposition)

مدرس: مسعود کاویانی

شاید اسم سختی داشته باشد، ولی کلمه تجزیه تابعی معنای ساده ای دارد. فرض کنید یک تکه کد دارید که میخواد یک شخص را در سیستم عضو کند. به این ترتیب که نام کاربری و ایمیل را از کاربر میگیرد، سپس یک کلمه عبور برای این کاربر ایجاد میکند و این کلمه عبور را برای کاربر مربوط ایمیل میکند. اگر این فرآیند را به قسمت های مختلفی تقسیم کنیم و هر کدام را برای مثال در یک تابع بنویسیم، تجزینه تابعی یا همان Functional Decomposition رخ داده است که کار خوبی هم هست.

تصویر زیر را نگاهی بیندازید:

ضد الگوی تجزیه تابعی

همان طور که در تصویر بالا میبینید، ما یک فرآیند داریم (در سمت چپ) که میتواند به چند تابع (Function) در سمت راست تبدیل شود. این توابع میتوانند در فایل ها جدا گانه ذخیره شوند و بعدا در جاهای مختلف استفاده شوند (ReUse). یعنی به جای اینکه تمامی فرآیند در یک تکه کد نوشته شود، این فرآیند به قسمت های مختلفی تقسیم بندی و می شود، هر قسمت یک تابع (Function) است و میتواند توسط فرآیند اصلی صدا زده شود.

تا اینجا همه چیز خوب است و کار درست پیش می رود. اما در استفاده از این تکنیک در برنامه نویسی شی گرا (Object Oriented Programming) باید حواسمان را جمع کرده باشیم. معمولا برنامه نویسانی که از برنامه نویسی تابعی به برنامه نویسی شی گرا مهاجرت میکنند، این ضد الگو را میتوان در کدهایشان مشاهده کرد.

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

برای حل این مشکل، باید ساختار کلی برنامه و تفکر شی گرایی در برنامه وجود داشته باشد. در ساختار شی گرایی هر شی به دلیلی ساخته می شود و لزوما هر تابع نمیتواند باعث ایجاد یک شی شود.

منابع این بحث و اطلاعات بیشتر

» این پاسخ از وب سایت StackExchange » وب سایت SourceMaking » این پاسخ از وب سایت StackOverFlow

در صورت تمایل به یادگیری بیشتر، منابع بالا در نظر گرفته شده است. می توانید با خواندن این منابع، به یادگیری خود در این زمینه عمق ببخشید

یک دیدگاه دربارهٔ «ضد الگو تجزیه تابعی (Functional Decomposition)»

  1. بسیار جذابه. خدا قوت
    سلسله مباحث Antipattern مفاهیم ملموس و فوق العاده کاربردی داره در توسعه نرم افزار.
    اگر کمی عمیق تر بحث میشد روش بسیار مطبوع تر بود.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *