مقدمه
پیش از این راجع به Bad Smell صحبت کردیم "کد های تکراری" یکی از 22 نوع Bad Smell میباشد.
نحوه تشخیص و معرفی راه حل کد های تکراری
اولین بوی بد کد های تکراری هست اگر شما یک ساختار کد را در بیشتر از یک مکان میبینید میتوانید مطمئن باشید که نرم افزار با یکی کردن آنها بهتر می شود.
ساده ترین مشکل وقتی هست که شما یک تکه کد را در دو تابع مختلف یک class دارید در این صورت تنها کافیست یک تابع استخراج کنید و در جای مناسب تابع را صدا بزنید. مشکل رایج بعدی وقتی هست که شما یک کد را در دو class که باهم sibling هستند دارید ( کلاس هایی که از یک کلاس دیگر مشتق شده اند) در این صورت شما میتوانید متد را در دو کلاس استخراج کنید و بعد به class پدر منتقل کنید.
اگر کد شبیه است اما تفاوت هایی دارد شما نیاز به بخش بندی کردن کد برای جداسازی بخش مشترک با بخش متفاوت دارید. پس از آن ممکن است بتوان تشخیص داد که با راه حل Form Template Method نیز مشکل تفاوت ها قابل حل هست. اگه دو متد یک کار را با دو الگوریتم متفاوت انجام می دهند بهتر است الگوریتم clear تر انتخاب شود.
اگر در دو کلاس نا مرتبط کد تکراری دارید راه حل استخراج Class و استفاده از Class جدید در محل های تکرار را مد نظر داشته باشید. احتمالات دیگری نیز ممکن است رخ دهد مثلا اینکه این تابع می بایست در یکی از Class ها قرار می گرفته و در دیگری صدا زده می شده یا در Class سومی قرار میگرفته و توسط هر دو کلاس صدا زده می شده شما باید تصمیم بگیرید که کد کجا معنی دار میشود و مطمئن شوید که مکان درست همانجا می باشد.