Handling Missing Info in .NET – The focused generalist

அனைவருக்கும் வணக்கம்,

C# 8.0 பல சிறந்த அம்சங்களைக் கொண்டு வந்துள்ளது மற்றும் அவற்றில் ‘Nullable Reference Type’ அம்சமும் உள்ளது.

C# 8.0 இன் மிகவும் தாக்கத்தை ஏற்படுத்தக்கூடிய அம்சம் nullable Reference Types (NRTs) ஆகும். இது உங்கள் குறியீட்டில் பூஜ்யங்களின் ஓட்டத்தை வெளிப்படையாக்க உதவுகிறது, மேலும் நீங்கள் நோக்கத்தின்படி செயல்படாதபோது உங்களை எச்சரிக்கிறது.

ஆதாரம்: https://devblogs.microsoft.com/dotnet/embracing-nullable-reference-types/

மதிப்புகள் தவறவிடப்படும் என நீங்கள் எதிர்பார்க்கும் குறியீட்டின் வெளிப்படையான பகுதிகளை உருவாக்குவதன் மூலம், குறியீட்டுத் தளத்தின் குறியீட்டுத் தரத்தை வெகுவாக மேம்படுத்தும் திறன் அவர்களுக்கு உள்ளது. அந்தத் தரவை நீங்கள் அடைய முயற்சிக்கும்போது, ​​​​தொகுப்பானது டெவலப்பரை வடிவமைப்பு நேரத்தில் கொடியிடுகிறது, அவர்கள் காணாமல் போன மதிப்பைக் குறைக்க முயற்சிக்கிறார்கள். இது ஒரு எச்சரிக்கையைத் தூண்டும்.

C# வகை அமைப்பிற்குள் டெவலப்பர்களுக்கான டூல்பாக்ஸில் இப்போது 2 விஷயங்கள் உள்ளன, அவை விடுபட்ட தகவலை வெளிப்படையாகக் காட்டுகின்றன:

டெவலப்பர்கள் தங்கள் அணுகுமுறையை வளர்க்கும் போது டைப் சிஸ்டம் முழுமையாகப் பாதுகாக்காது. நீங்கள் அணுக முயற்சிக்கும் மதிப்பு பூஜ்யமாக இல்லை என்பதை உறுதிசெய்ய வேண்டும் இல்லையெனில் அது இயக்க நேரத்தில் உங்கள் முகத்தில் வெடிக்கும். வகை அமைப்பின் குறைபாடுகளில் ஒன்று, நீங்கள் உங்கள் தரவை ஒரு NRT அல்லது NVTக்குள் மடித்துக் கொண்டாலும், பாதுகாப்பற்ற முறையில் தரவை அடையலாம் மற்றும் பல சிக்கல்களை ஏற்படுத்தலாம்.

அங்குதான் F# பெரிதும் பிரகாசிக்கிறது. மொழியின் சொந்த நூலகத்தில், தற்போது ‘விருப்பம்’ என்ற வகைக்கான அணுகல் உள்ளது.

பெயரிடப்பட்ட மதிப்பு அல்லது மாறிக்கு உண்மையான மதிப்பு இல்லாதபோது F# இல் உள்ள விருப்ப வகை பயன்படுத்தப்படுகிறது. ஒரு விருப்பத்திற்கு அடிப்படை வகை உள்ளது மற்றும் அந்த வகையின் மதிப்பை வைத்திருக்கலாம் அல்லது அதற்கு மதிப்பு இல்லாமல் இருக்கலாம்.

மதிப்பு None ஒரு விருப்பத்திற்கு உண்மையான மதிப்பு இல்லாதபோது பயன்படுத்தப்படுகிறது. இல்லையெனில், வெளிப்பாடு Some( ... ) விருப்பத்திற்கு மதிப்பு கொடுக்கிறது. மதிப்புகள் Some மற்றும் None பின்வரும் செயல்பாட்டில் உள்ளதைப் போல, மாதிரிப் பொருத்தத்தில் பயனுள்ளதாக இருக்கும் existsஇது திரும்பும் true விருப்பத்திற்கு மதிப்பு இருந்தால் மற்றும் false அது இல்லை என்றால்.

ஆதாரம்: https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/options

F# ஒரு முக்கிய நிரலாக்க மொழி அல்ல, ஆனால் இறுதி முதல் இறுதி வரையிலான பயன்பாட்டு மேம்பாட்டிற்கான மிகவும் வலுவான போட்டியாளர். டெவலப்பர்களுக்கு இது வழங்கும் எண்ணற்ற சிறந்த அம்சங்கள் மற்றும் கருவிகளில், F# இன் கண்டிப்பான வகை அமைப்பின் கலவையுடன் விருப்ப வகை சிறந்து விளங்குகிறது. உங்கள் தரவின் அனைத்து பாதைகளையும் கருத்தில் கொள்ள வேண்டிய கட்டாயத்தில் உள்ளீர்கள். இதன் பொருள், காணாமல் போகக்கூடியது மற்றும் இருக்கக்கூடிய சாத்தியம் இரண்டும் a இல் கையாளப்பட வேண்டும் போட்டி வெளிப்பாடு.

விருப்ப வகை போன்ற செயல்பாடுகள் உள்ளன IsSome, IsNone மற்றும் Value, இது பேட்டர்ன் மேட்ச் செய்யாமல் “மூடப்பட்ட” மதிப்பை அணுக உங்களை அனுமதிக்கிறது. அவற்றைப் பயன்படுத்தாதே! இது முட்டாள்தனமானது அல்ல, ஆனால் இது ஆபத்தானது மற்றும் விதிவிலக்குகளை ஏற்படுத்தும்.

ஆதாரம்: https://fsharpforfunandprofit.com/posts/the-option-type/

C# அல்லது Java போன்ற ஒரு மொழியில், “null” என்பது இல்லாத ஒரு பொருளின் குறிப்பு அல்லது சுட்டி என்று பொருள். “பூஜ்ய” உள்ளது சரியாக அதே வகை பொருளாக, நீங்கள் ஒரு பூஜ்யத்தைக் கொண்டிருப்பதாக வகை அமைப்பிலிருந்து சொல்ல முடியாது.

இப்போது மேலே உள்ள C# உதாரணத்திற்குச் சமமான F# ஐப் பார்ப்போம். F# இல், விடுபட்ட தரவைக் குறிக்க, நீங்கள் ஒரு விருப்ப வகையைப் பயன்படுத்தி அதை அமைக்க வேண்டும் None.

F# பதிப்பில், நமக்கு ஒரு கிடைக்கும் தொகுக்கும் நேரம் உடனடியாக பிழை. தி None இருக்கிறது இல்லை ஒரு சரம், இது முற்றிலும் வேறுபட்ட வகை, எனவே நீங்கள் அழைக்க முடியாது Length நேரடியாக அதன் மீது. மற்றும் தெளிவாக இருக்க வேண்டும், Some [string] இருக்கிறது மேலும் அதே வகை அல்ல stringஅதனால் நீங்கள் அழைக்க முடியாது Length அதில் ஒன்று!

அப்படியென்றால் Option<string> இது ஒரு சரம் அல்ல, ஆனால் அதில் உள்ள (கூடிய) சரத்தைக் கொண்டு நீங்கள் ஏதாவது செய்ய விரும்புகிறீர்கள், நீங்கள் அதை வடிவத்துடன் பொருத்த வேண்டிய கட்டாயத்தில் உள்ளீர்கள் (முன்பு விவரித்தபடி நீங்கள் மோசமான செயல்களைச் செய்யவில்லை என்று வைத்துக்கொள்வோம்).

டெவலப்பராக உங்களுக்கு வழங்கும் சக்தியை விரைவாகப் புறக்கணிக்கக்கூடாது. நாங்கள் எந்த வகையான பயன்பாடுகளையும் உருவாக்கி வருவதால், சோதனைக் கேஸ் காணாமல் போனதால் அல்லது உங்கள் சோதனை ஒன்றில் கவரேஜை நீங்கள் தவறவிட்டதால், ஒரு அம்சத்திற்குத் திரும்புவது ஒருவித அடியாகும். வேடிக்கையான பிழைகளைப் பிடிக்க ஒரு வகை அமைப்பைக் கொண்டிருப்பது மற்றும் இயக்க நேரத்தில் நீங்கள் பொதுவாகப் பிடிக்கும் விஷயங்களுக்கு தொகுக்கும் நேரப் பிழைகளை வழங்குவது பெரிய வித்தியாசம் உங்கள் மென்பொருளை வெளியிட தரம் மற்றும் உற்பத்தித்திறன் ஆகிய இரண்டிலும்.

தரவு விஞ்ஞானிகளுக்கு அல்லது டொமைன் மாடலிங்கிற்கான ஒரு கருவியாக F# காணப்பட்டாலும், இது ஒரு பொது-நோக்க மொழியாகும், மேலும் இது என்னை மீண்டும் மீண்டும் சொல்லும் பொருட்டு உண்மையில் சிறந்த விஷயங்களைச் செய்கிறது. உங்களின் அடுத்த திட்டத்திற்கு F#ஐ ஏன் கருத்தில் கொள்ள வேண்டும் என்பதைப் பார்க்க, பின்வரும் இரண்டு கட்டுரைகளையும் பார்க்க உங்களை அழைக்கிறேன்:

நன்றி,

கெவின்

Leave a Comment