مقدمه
پیش از این راجع به Bad Smell و کاربرد آن در مهندسی نرم افزار صحبت کردیم "دستور سوییچ" یکی از 22 نوع Bad Smell میباشد.
نحوه تشخیص و معرفی راه حل دستور سوییچبیشتر مواقع که یک دستور switch می بینید باید به حساب چند ریختی یا Poly-Morphism بگزارید این مشکل وقتی که باید چند ریختی رخ دهد به وجود می آید. معمولا switch برای یک کد نوع استفاده می شود شما یک متد میخواهید که کد نوع را برگرداند. میتوانید از استخراج متد برای استخراج switch استفاده کنید و با انتقال متد تابع را به کلاس ای که پولی مورفیسم در آن نیاز است منتقل کنید. در آن زمان نیاز به انتخاب بین روش جایگزینی نوع کد با کلاس زیر[1] یا از روش جایگزینی نوع کد با حالت[2] دارید. وقتی که ساختار وراثت را مشخص کردید میتوانید از جایگزینی عبارت شرطی با پولی مورفیسم[3] استفاده کنید.
برای مثال ممکن است در کلاس کارمند، تابع محاسبه حقوق یک switch وجود داشته باشد که بر اساس کد از پیش مشخص شده کارمند یکی از دو حالت روزمزد و استخدامی را برای محاسبه حقوق انتخاب کند. در این صورت باید از کلاس کارمند دو کلاس کارمند روزمزد و کارمند استخدامی مشتق کنید و این تفاوت های چند ریختی را آنجا اعمال کنید.
[1] Replace Type Code with Subclass
[2] Replace Type Code with State/Strategy
[3] Replace Conditional with Polymorphism