وقتی شروع به کد زنی میکنیم ، ممکنه جایی برای انجام سریعتر کارها یه سری کدها رو جایی بنویسیم که نباید مینوشتیم . انگار که قیمه رو بریزیم تو ماستااا در زیر 6 مورد از موارد ماست ریزی رو باهم بررسی میکنیم .
چون اولین نقطه ای که درخواست های وب بهش میرسه 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 پیش میاد . پروسه ی صحت سنجی داده ها بایستی با روشهایی مثل استفاده از Data Annotation ها و ... صورت بگیره تا با فاجعه ی انسانی زیر روبرو نشیم !
public async Task<HttpResponseMessage> PerformAction(DepositRequest model)
{
if (string.IsNullOrEmpty(model.Name))
{
return Request.CreateResponse(HttpStatusCode.BadRequest);
}
// ...
}
از جمله عملیات هایی که ممکن هست به اشتباه در کنترلر قرار بگیره ، BL کار هست. گاهی این مسئله با Validation اشتباه گرفته میشه .از جمله مثال های مربوط به BL میشه به عملیات خرید، عملیات محاسباتی (مثلا محاسبه ی مالیات و ...) ، ذخیره سازی تصویر و ... اشاره کرد که این موارد هیچ جایگاهی در کنترلر ما ندارن !
میشه پروسه ی Authorization رو مثل Validation دید با این تفاوت که اولی صحت سنجی میکنه که کاربر به جایی که نباید دسترسی نداشته باشه و دومی داده های ورودی کاربر رو بررسی میکنه ، اگر شما در داخل Action تون ، از طریق پراپرتی User کاری انجام میدین و شرط و شروطی رو بررسی میکنین بدونین که یه جای کارتون میلنگه !
اگر داخل کنترلرتون از try/catch استفاده میکنین و عملیات مرتبط با Log کردن داخلش قرار گرفته ، کارتون اشتباه هست.در این مواقع راهکارهای مختلفی وجود داره . استفاده از Middleware ها یا Global Filter هایی مثل HandleError
اگر داخل کنترلرتون داده ای رو از دیتابیس میخونین و یا اینکه داده ای رو ذخیره میکنین دارین اشتباه میزنین ! قطعا این موارد بایستی از این بخش حذف بشه و به سرویس های دیگه ای منتقل بشه
بنیانگذار توسینسو و توسعه دهنده
علی شکرالهی، بنیانگذار TOSINSO ، توسعه دهنده وب و برنامه نویس موبایل، مهندسی نرم افزار از دانشگاه آزاد اسلامی واحد کرج ، بیش از 15 سال سابقه ی فعالیت های حرفه ای و آموزشی
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود