آخرین فرصت تا %60 تخفیف خرید یکجای دوره ها برای 2 نفر فقط تا
00 00 00

شش خطای انسانی که نباید در Controller های asp.net رخ بده !

وقتی شروع به کد زنی میکنیم ، ممکنه جایی برای انجام سریعتر کارها یه سری کدها رو جایی بنویسیم که نباید مینوشتیم . انگار که قیمه رو بریزیم تو ماستااا

در زیر 6 مورد از موارد ماست ریزی رو باهم بررسی میکنیم .

Map کردن DTO ها

چون اولین نقطه ای که درخواست های وب بهش میرسه Action هامون هستن ، به همین خاطر گاها اشتباه پیش میاد که پر کردن اطلاعات DTO ها رو همونجا انجام میدیم

مثال زیر رو در نظر بگیرین :

public async Task<HttpResponseMessage> PerformAction(DepositRequest model)
{
    var dto = new Deposit();

    dto.Price = model.Price;
    dto.Image = model.Image;
    
    // ...

}

 

یکی از اصول اصلی شیء گرایی ، SRP یا Single Responsibility Principal هست. اینکار عملا این اصل رو داره زیر سوال میبره و نباید این مسئله در کنترلر انجام بشه .

Validation یا صحت سنجی داده ها

از اصول اصلی در پیاده سازی نرم افزارها ، عدم اعتماد به ورودی کاربر هست ، تحت هر شرایطی. در این مواقع مسئله ی Validation پیش میاد .

پروسه ی صحت سنجی داده ها بایستی با روشهایی مثل استفاده از Data Annotation ها و ... صورت بگیره تا با فاجعه ی انسانی زیر روبرو نشیم !

public async Task<HttpResponseMessage> PerformAction(DepositRequest model)
{
   if (string.IsNullOrEmpty(model.Name))
   {
       return Request.CreateResponse(HttpStatusCode.BadRequest);
   }


    // ...
}

 

Bussiness Logic

از جمله عملیات هایی که ممکن هست به اشتباه در کنترلر قرار بگیره ، BL کار هست. گاهی این مسئله با Validation اشتباه گرفته میشه .

از جمله مثال های مربوط به BL میشه به عملیات خرید، عملیات محاسباتی (مثلا محاسبه ی مالیات و ...) ، ذخیره سازی تصویر و ... اشاره کرد که این موارد هیچ جایگاهی در کنترلر ما ندارن !

Authorization

میشه پروسه ی Authorization رو مثل Validation دید با این تفاوت که اولی صحت سنجی میکنه که کاربر به جایی که نباید دسترسی نداشته باشه و دومی داده های ورودی کاربر رو بررسی میکنه

اگر شما در داخل Action تون ، از طریق پراپرتی User کاری انجام میدین و شرط و شروطی رو بررسی میکنین بدونین که یه جای کارتون میلنگه !

کنترل خطا (Error Handling)

اگر داخل کنترلرتون از try/catch استفاده میکنین و عملیات مرتبط با Log کردن داخلش قرار گرفته ، کارتون اشتباه هست.

در این مواقع راهکارهای مختلفی وجود داره . استفاده از Middleware ها یا Global Filter هایی مثل HandleError

 

دریافت یا ذخیره اطلاعات

اگر داخل کنترلرتون داده ای رو از دیتابیس میخونین و یا اینکه داده ای رو ذخیره میکنین دارین اشتباه میزنین !

قطعا این موارد بایستی از این بخش حذف بشه و به سرویس های دیگه ای منتقل بشه

0 نظر

هیچ نظری ارسال نشده است! اولین نظر برای این مطلب را شما ارسال کنید...

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر