حسام حداد

در مورد برنامه نویسی ، الگوریتم نویسی ، نکات ترفند ها

حسام حداد

در مورد برنامه نویسی ، الگوریتم نویسی ، نکات ترفند ها

در این وبلاگ شخصی نکته ها ، راهکار ها و مطالب جدید برنامه نویسی قرار میگیرد.
نویسنده کلیه مطالب شخص حسام حداد میباشد و خواهشمند است حق کپی را رعایت کنید.

آخرین نظرات
  • ۱۸ آبان ۹۵، ۱۲:۵۱ - سامان
    ای ول

کد های تکراری Duplicated Code

جمعه, ۲۵ دی ۱۳۹۴، ۱۱:۳۴ ق.ظ

مقدمه

پیش از این راجع به Bad Smell صحبت کردیم "کد های تکراری" یکی از 22 نوع Bad Smell میباشد.

نحوه تشخیص و معرفی راه حل کد های تکراری

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

نظرات (۰)

هیچ نظری هنوز ثبت نشده است
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی