این کد بد بو در دسته « جلوگیری کنندگان از تغییر » قرار میگیرد. معمولا زمانیکه فراخوانیهایی مانند تکه کد زیر را در بخشی از کد مشاهده کردید، با چنین کد بد بویی مواجه هستید. MethodA().MethodB().MethodC(); فراخوانی هر یک از این متدها در خطی مجزا از کد نیز تشکیل دهندهی این الگوی بد است. استفاده کنندهی از این زنجیره پیام، برای استفادهی درست از آن، باید در جریان هریک از حلقههای زنجیره و ترتیب فراخوانی آنها باشد. در صورتیکه هر ...
دلال یا Middle man در دسته الگوهای « کدهایی بیش از اندازه وابسته به هم » قرار میگیرد. زمانیکه یک کلاس، تنها کاری را که انجام میدهد، هدایت فراخوانی به کلاس دیگری باشد، با این الگو مواجه هستیم. تشخیص این کد بد بو معمولا بسیار آسان است. به طور مثال: public class ProductQuery
{
public dynamic GetProductsByCustomerId(int id)
{
return new ExpandoObject();
}
}
p ...
متد حسود یا Feature envy در دسته بندی « کدهایی بیش از اندازه، وابسته به هم » قرار میگیرد. چنین متدی بیش از آنکه از فیلدها و خصوصیات کلاس خود استفاده کند، از فیلدها و خصوصیات شیء دیگری از نوعی دیگر، استفاده میکند. یکی از اشکالات کدهای بیش از اندازه وابسته به هم، دشواری در نگهداری و تغییر کد است. بهطوریکه در زمان تغییر بخشی از کد، نیاز است بخشهای مرتبط نیز مورد بررسی قرار گیرند. همچنین وابستگی بیش از اندازه کلاسها به یکدیگر قابل ...
این کد بد بو در دسته « جلوگیری کنندگان از تغییر » قرار میگیرد. اگر زمان ایجاد یک کلاس فرزند برای کلاسی، مجبور به ایجاد یک کلاس فرزند متناظر آن برای کلاس دیگری باشید، با این کد بد بود مواجه هستید. معمولا زمانی این اتفاق میافتد که یک درخت ارث بری به درخت ارث بری دیگری وابسته باشد. بهطوری که هر یک از کلاسهای موجود در آن، با یک کلاس در درخت دیگر متناظر باشند و ارتباط داشته باشند. این امر ایجاد تغییرات در کد را با مشکل مواجه خواهد کرد. ...
فیلد موقتی یا Temporary field در دسته بندی الگوهای « بد استفاده کنندگان از شیء گرایی » قرار میگیرد. در این الگوی بد، فیلدها یا خصوصیات یک کلاس، در شرایط خاصی مقدار گرفته و مورد استفاده قرار میگیرند و در بقیه شرایط خالی هستند. زمانیکه در یک کلاس، متدی برای انجام فعالیت خود، تعدادی پارامتر ورودی زیادی نیاز داشته باشد، ممکن است برنامه نویس برای مواجه نشدن با تعداد پارامترهای زیاد ورودی، فیلدها یا خصوصیاتی را در کلاس مربوط به آن متد ایجا ...
این کد بد بو در دسته « بد استفاده کنندگان از شیء گرایی » قرار میگیرد. زمانیکه گذارههای switch و یا دنبالهای از گذارههای if در کد وجود داشته باشد، معمولا با چنین الگویی روبرو هستیم. تشخیص این کد بد بو نیز بسیار آسان است. در شرایط نادری استفاده از switch میتواند یک طراحی شیء گرای مناسب باشد. در طراحی شیء گرا معمولا یک گذاره switch نشان دهنده یک رابطه چند ریختی (Polymorphism) نادیده گرفته شده است. معمولا زمانیکه بجای استفاده از اص ...
این نوع کد بد بو در دسته بندی « کدهای متورم » قرار میگیرد. یکی از نتایج متورم شدن کدها، سخت شدن نگهداری آنهاست. بدیهی به نظر میرسد که نگهداری و اعمال تغییرات بر روی یک کلاس بزرگ، دشوار و زمان گیر خواهد بود. علارغم سادگی مفهوم این نوع کد بد بو، این مورد یکی از موارد پر تکرار درمحصولها است. کلاس بزرگ کلاسی است که تعداد اعضای آن (فیلد، خصوصیت، متد) زیاد باشند و تعداد خطوط کد زیادی نیز داشته باشد. چرا چنین بویی به راه میافتد ...
میراث رد شده یا Refused bequest به دسته «بد استفاده کنندگان از شیء گرایی» تعلق دارد. این دسته از کدهای بد بو، معمولا استفاده ناقص یا نادرستی از مفاهیم و اصول شیء گرایی دارند.
زمانیکه یک کلاس تنها بخشی از اعضای (خصوصیت، متد و ...) کلاس پدر خود را استفاده میکند، با این الگو سر و کار داریم. در چنین شرایطی دیگر اعضای کلاس پدر یا استفاده نمیشوند و یا حتی در صورت پیاده سازی شدن توسط کلاس، بلااستفاده میمانند. به طور مثال متدها ...
برای مشاهده طبقه بندی Bad code smellها میتوانید به اینجا مراجعه کنید. زمانیکه متدی بیش از سه یا چهار پارامتر ورودی داشته باشد، به چنین مشکلی برخوردهایم. این بوی بد کد از دسته «کدهای متورم» است. کدهای متورم معمولا به مرور زمان ایجاد و کار را برای نگهداری کد سخت میکنند. توجه به این نکته که کدهای متورم به مرور زمان به این وضعیت دچار میشوند امری ضروری در درک بهتر و جلوگیری از این حالت بد کد است. این نوع کد بد بو ...
برای مشاهده طبقه بندی Bad code smellها میتوانید به اینجا مراجعه کنید. زمانیکه به ازای هر تغییر، نیاز باشد تغییرات کوچکی در تعداد کلاسهای زیادی انجام شود، این بوی بد کد بوجود آمده است. این الگو از دسته بندی «جلوگیری کنندگان از تغییر» است. نام این دسته بندی به طور واضح گویای مشکلی است که این الگوی بد ایجاد میکند. چرا چنین بویی به راه میافتد؟ یکی از نشانههای وجود چنین الگوی بدی در کدها، مشاهده کدهای تکراریست. ریشه اصلی ...