web analytics
Rate this page


#refactoring
#code_smells
#dive_into_refactoring
#Alexander_Shvets

Code Smells :

* Object-Orientation Abusers *

۱) Switch Statements

‫شما یک عملگر switch پیچیده یا دنباله ای از دستورات if دارید. حالا برای ریفکتور کردن این قضیه راه های پیش رو ایناست :

– ‫اگر switch بر اساس type code باشه، مانند زمانی که حالت زمان اجرا برنامه تغییر می کند، میتونیم از sub class یا State/Strategy استفاده کنیم

– ‫پس از مشخص کردن ساختار وراثت، میتونیم به جای if یا switch از Polymorphism استفاده کنیم

– ‫اگر شرط های خیلی زیادی در operator وجود نداشته باشد و همه آنها یک متد را با پارامترهای مختلف فراخوانی کنند، Polymorphism اضافی خواهد بود. در این صورت، می‌توانید آن متد را با به چندین متد کوچکتر تقسیم کنید و switch را بر اساس آن تغییر دهید.

یه سری مواقع هم هست که خب باید از همون‫ switch استفاده کرد مثل وقتی که از switch توسط الگوهای (Factory Method یا Abstract Factory) برای انتخاب کلاس ایجاد شده استفاده می شوند.

‫نکته : اگر یکی از گزینه های شرطی null بود، از Null Object Pattern استفاده کنید👌



منبع

PHP Code Snippets Powered By : XYZScripts.com