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: |

Telegram hopes to raise $1bn with a convertible bond private placement

The super secure UAE-based Telegram messenger service, developed by Russian-born software icon Pavel Durov, is looking to raise $1bn through a bond placement to a limited number of investors from Russia, Europe, Asia and the Middle East, the Kommersant daily reported citing unnamed sources on February 18, 2021.The issue reportedly comprises exchange bonds that could be converted into equity in the messaging service that is currently 100% owned by Durov and his brother Nikolai.Kommersant reports that the price of the conversion would be at a 10% discount to a potential IPO should it happen within five years.The minimum bond placement is said to be set at $50mn, but could be lowered to $10mn. Five-year bonds could carry an annual coupon of 7-8%.

Among the actives, Ascendas REIT sank 0.64 percent, while CapitaLand Integrated Commercial Trust plummeted 1.42 percent, City Developments plunged 1.12 percent, Dairy Farm International tumbled 0.86 percent, DBS Group skidded 0.68 percent, Genting Singapore retreated 0.67 percent, Hongkong Land climbed 1.30 percent, Mapletree Commercial Trust lost 0.47 percent, Mapletree Logistics Trust tanked 0.95 percent, Oversea-Chinese Banking Corporation dropped 0.61 percent, SATS rose 0.24 percent, SembCorp Industries shed 0.54 percent, Singapore Airlines surrendered 0.79 percent, Singapore Exchange slid 0.30 percent, Singapore Press Holdings declined 1.03 percent, Singapore Technologies Engineering dipped 0.26 percent, SingTel advanced 0.81 percent, United Overseas Bank fell 0.39 percent, Wilmar International eased 0.24 percent, Yangzijiang Shipbuilding jumped 1.42 percent and Keppel Corp, Thai Beverage, CapitaLand and Comfort DelGro were unchanged.

telegram from cn


Telegram C# Programming Guide
FROM USA