روی خط زندگی

گشت و گذار من در هنر نرم افزار

روی خط زندگی

گشت و گذار من در هنر نرم افزار

۱ مطلب با موضوع «Clean Code» ثبت شده است

Code Smell ها علائم سطحی ای هستند که حاکی از وجود مشکلات عمیق در سیستم می باشند. (مارتین فولر)

این تعریف جناب فولر، بیان عمیق و درستی از مفهوم Code Smell ها ارائه می دهد. وقتی در یک سیستم نشانه هایی از Code Smell ها مشاهده می کنیم می توانیم حدس بزنیم که این سیستم احتمالا در جایی به مشکل خواهد خورد و یا توسعه و پشتیبانی آن دچار اشکال خواهد بود. Code Smell ها نشانه هایی از زلزله ای قریب الوقوع در سیستم می باشند. به برخی از مهمترین Code Smell ها به اختصار اشاره می کنیم:


  • Duplicated code: کد های تکراری در برنامه که ناقض اصل DRY هستند.
  • Long Method: وجود متد های طولانی در سیستم علاوه بر نقض اصول OOP بخصوص اصل تک مسئولیتی (Single Responsibility) ، پیگیری خطاها را مشکل خواهد کرد.
  • Large Class یا God Object: اصل تک مسئولیتی را نقض می کنند و به مانند متد های طولانی رهگیری خطاها را دشوار می سازند. همچنین عموما این کلاس ها سبب ایجاد درهم تنیدگی (Coupling) در سیستم می شوند.

  • Feature envy: استفاده بیش از حد یک کلاس از کلاس دیگر. این مورد شاید توضیح بیشتری لازم داشته باشد. فرض کنید یک کلاس برای مدیریت نمرات دانش آموزان داریم. حال می خواهیم معدل دانش آموزان را حساب کنیم. برای این کار می توانیم تک تک نمرات دانش آموز را از کلاس بگیریم و معدل وی را در خارج از کلاس دانش آموز محاسبه کنیم، اما این یک مشکل بزرگ ایجاد می کند. ما (به عنوان یک کلاس دیگر) بیش از حد به کلاس دانش آموز وابسته شده ایم و با هر تغییری در لیست نمرات کد های کلاس ما نیز دچار مشکل می شود. بهتر آن است که این وظیفه را به خود کلاس دانش آموز بدهیم و در واقع کلاس دانش آموز یک تابع ارائه نماید که معدل دانش آموزان را حاسبه کرده و نتیجه را در اختیار ما قرار می دهد. به بیان دیگر، یک کلاس باید در ارائه خصوصیات به دنیای بیرون خساست به خرج دهد و فقط چیز هایی را به بیرون ارائه دهد که لازم است.

۰ نظر موافقین ۱ مخالفین ۰ ۱۸ دی ۹۳ ، ۲۲:۲۹
حسین گویا