Telegram Group & Telegram Channel
C# Programming Guide
Photo
به شخصه اصلا توی پروژه ها و پکیج هایی که خیلی پرفورمنس توشون مهمه از این روش استفاده نمی کنم (اعتبار سنجی ویدئوی بالا) و توصیه میکنم شما هم اگر پکیجی دارید که کارش اینه از این روش های مدیریت اعتبار سنجی ورودی ها استفاده نکنید (خیلی هم این نوع اعتبار سنجی ها مرسومه و کسی فکر بهتری براش نداره)
پترنی که من توی این شرایط ساختم و ازش استفاده میکنم:

شما باید فرض رو بر این بگیرید که همه چیز درسته و طبق معمول داده های ورودی اشتباه نیست، وقتی چیزی اشتباه میشه یعنی داده های ورودی بنابه هر دلیلی اشتباه وارد شده که احتمالا یا از باگ هست یا کاربر داده های ورودی رو اشتباه فرستاده.
اما چطوری به برنامه نویس بگیم که به پکیج ما داده ی ورودی اشتباهی وارد کرده و خطای درستی بهش نشون بدیم تا مشکل یابی براش سریع و راحت باشه؟
این پترن این شکلی کار میکنه که کلاس های شما و هسته ی بیزینسی اون داده های خام و لاجیک مخصوص به خودشون رو دارن، بدون اینکه اعتبار سنجی ای توش باشه و بدون اینکه حتی try و catch توش گذاشته باشید. بنابراین توی لاجیک اصلی برنامه فرض بر اینه که همه چیز درسته.
در قسمتی از پروژه یک try و catch کلی دارید که به محض خوردن به Exception کلاس های اعتبار سنجی رو اجرا میکنن و خطای اعتبار سنجی صحیحی رو به برنامه نویس نشون میدن. حتی میتونید مدیریت این Try catch ها رو به خود برنامه نویس بسپارید.
اینکار باعث میشه فقط در صورتی که به exception خوردید اعتبار سنجی ها اتفاق بیوفته و خطای درستی به کاربر نشون داده بشه.
به این نکته ی مهم توجه کنید مثلا در سریالایز کردن یا دیسریالایز کردن یک داده ی json ممکنه میلیون ها پردازش در لحظه داشته باشید که ممکنه در ماه هم به یک استثنا نخورید. ولی وقتی اعتبار سنجی رو داخل منطق اصلی بذارید به ازای میلیون ها پردازش شما اونا رو انجام دادید.
چقدر سربار الکی ایجاد شده در حالی که با استفاده از این پترن همه‌ی اون سربار رو از بین بردید.
اینجاست که پکیجی مثل BinaryGo نسبت به بقیه پرفورمنس بالاتری داره چون از این پترن استفاده میکنه (البته هنوز این پترن رو تکمیل نکردم و در نظر دارم که یک پکیج براش بسازم)
نکته: این پترن توی همه ی پروژه ها توصیه نمیشه فقط پروژه هایی که تمرکزشون روی پرفورمنسه خیلی مهمه.



tg-me.com/CsharpTips/352
Create:
Last Update:

به شخصه اصلا توی پروژه ها و پکیج هایی که خیلی پرفورمنس توشون مهمه از این روش استفاده نمی کنم (اعتبار سنجی ویدئوی بالا) و توصیه میکنم شما هم اگر پکیجی دارید که کارش اینه از این روش های مدیریت اعتبار سنجی ورودی ها استفاده نکنید (خیلی هم این نوع اعتبار سنجی ها مرسومه و کسی فکر بهتری براش نداره)
پترنی که من توی این شرایط ساختم و ازش استفاده میکنم:

شما باید فرض رو بر این بگیرید که همه چیز درسته و طبق معمول داده های ورودی اشتباه نیست، وقتی چیزی اشتباه میشه یعنی داده های ورودی بنابه هر دلیلی اشتباه وارد شده که احتمالا یا از باگ هست یا کاربر داده های ورودی رو اشتباه فرستاده.
اما چطوری به برنامه نویس بگیم که به پکیج ما داده ی ورودی اشتباهی وارد کرده و خطای درستی بهش نشون بدیم تا مشکل یابی براش سریع و راحت باشه؟
این پترن این شکلی کار میکنه که کلاس های شما و هسته ی بیزینسی اون داده های خام و لاجیک مخصوص به خودشون رو دارن، بدون اینکه اعتبار سنجی ای توش باشه و بدون اینکه حتی try و catch توش گذاشته باشید. بنابراین توی لاجیک اصلی برنامه فرض بر اینه که همه چیز درسته.
در قسمتی از پروژه یک try و catch کلی دارید که به محض خوردن به Exception کلاس های اعتبار سنجی رو اجرا میکنن و خطای اعتبار سنجی صحیحی رو به برنامه نویس نشون میدن. حتی میتونید مدیریت این Try catch ها رو به خود برنامه نویس بسپارید.
اینکار باعث میشه فقط در صورتی که به exception خوردید اعتبار سنجی ها اتفاق بیوفته و خطای درستی به کاربر نشون داده بشه.
به این نکته ی مهم توجه کنید مثلا در سریالایز کردن یا دیسریالایز کردن یک داده ی json ممکنه میلیون ها پردازش در لحظه داشته باشید که ممکنه در ماه هم به یک استثنا نخورید. ولی وقتی اعتبار سنجی رو داخل منطق اصلی بذارید به ازای میلیون ها پردازش شما اونا رو انجام دادید.
چقدر سربار الکی ایجاد شده در حالی که با استفاده از این پترن همه‌ی اون سربار رو از بین بردید.
اینجاست که پکیجی مثل BinaryGo نسبت به بقیه پرفورمنس بالاتری داره چون از این پترن استفاده میکنه (البته هنوز این پترن رو تکمیل نکردم و در نظر دارم که یک پکیج براش بسازم)
نکته: این پترن توی همه ی پروژه ها توصیه نمیشه فقط پروژه هایی که تمرکزشون روی پرفورمنسه خیلی مهمه.

BY C# Programming Guide




Share with your friend now:
tg-me.com/CsharpTips/352

View MORE
Open in Telegram


telegram Telegram | DID YOU KNOW?

Date: |

The lead from Wall Street offers little clarity as the major averages opened lower on Friday and then bounced back and forth across the unchanged line, finally finishing mixed and little changed.The Dow added 33.18 points or 0.10 percent to finish at 34,798.00, while the NASDAQ eased 4.54 points or 0.03 percent to close at 15,047.70 and the S&P 500 rose 6.50 points or 0.15 percent to end at 4,455.48. For the week, the Dow rose 0.6 percent, the NASDAQ added 0.1 percent and the S&P gained 0.5 percent.The lackluster performance on Wall Street came on uncertainty about the outlook for the markets following recent volatility.

A project of our size needs at least a few hundred million dollars per year to keep going,” Mr. Durov wrote in his public channel on Telegram late last year. “While doing that, we will remain independent and stay true to our values, redefining how a tech company should operate.

telegram from br


Telegram C# Programming Guide
FROM USA