شاید اسم سختی داشته باشد، ولی کلمه تجزیه تابعی معنای ساده ای دارد. فرض کنید یک تکه کد دارید که میخواد یک شخص را در سیستم عضو کند. به این ترتیب که نام کاربری و ایمیل را از کاربر میگیرد، سپس یک کلمه عبور برای این کاربر ایجاد میکند و این کلمه عبور را برای کاربر مربوط ایمیل میکند. اگر این فرآیند را به قسمت های مختلفی تقسیم کنیم و هر کدام را برای مثال در یک تابع بنویسیم، تجزینه تابعی یا همان Functional Decomposition رخ داده است که کار خوبی هم هست.
تصویر زیر را نگاهی بیندازید:
همان طور که در تصویر بالا میبینید، ما یک فرآیند داریم (در سمت چپ) که میتواند به چند تابع (Function) در سمت راست تبدیل شود. این توابع میتوانند در فایل ها جدا گانه ذخیره شوند و بعدا در جاهای مختلف استفاده شوند (ReUse). یعنی به جای اینکه تمامی فرآیند در یک تکه کد نوشته شود، این فرآیند به قسمت های مختلفی تقسیم بندی و می شود، هر قسمت یک تابع (Function) است و میتواند توسط فرآیند اصلی صدا زده شود.
تا اینجا همه چیز خوب است و کار درست پیش می رود. اما در استفاده از این تکنیک در برنامه نویسی شی گرا (Object Oriented Programming) باید حواسمان را جمع کرده باشیم. معمولا برنامه نویسانی که از برنامه نویسی تابعی به برنامه نویسی شی گرا مهاجرت میکنند، این ضد الگو را میتوان در کدهایشان مشاهده کرد.
برای مثال اگر در ساختار برنامه خود، کلاسی دارید که فقط یک تابع دارد، این احتمال می رود که شما دچار این ضد الگو شده اید. برای مثال فرض کنید در تصویر بالا هر کدام از توابع سمت راست را به یک کلاس تبدیل کرده و در هر کلاس یک تابع ایجاد کنیم. شاید در نگاه اول کار زیبا و هوشمندانه ای برسد، ولی این کار باعث خرابی در ساختار شی گرایی برنامه و تبعات منفی آن دارد.
برای حل این مشکل، باید ساختار کلی برنامه و تفکر شی گرایی در برنامه وجود داشته باشد. در ساختار شی گرایی هر شی به دلیلی ساخته می شود و لزوما هر تابع نمیتواند باعث ایجاد یک شی شود.
بسیار جذابه. خدا قوت
سلسله مباحث Antipattern مفاهیم ملموس و فوق العاده کاربردی داره در توسعه نرم افزار.
اگر کمی عمیق تر بحث میشد روش بسیار مطبوع تر بود.