अशक्त सहवर्ती ऑपरेटर (??)
व्यक्तिगत रूप से, मुझे इस ऑपरेटर का उपयोग करने के लिए कोई डाउनसाइड नहीं दिखता है। निम्नलिखित तीन कोड नमूनों पर विचार करें, 'आसान' से 'जटिल' नए ऑपरेटरों तक।
जादू के बिना:
bool isNameSet = false;
string name;
if ( isNameSet )
{
Console.WriteLine( name );
}
else
{
Console.WriteLine( "No name set." );
}
टर्नरी ऑपरेटर:
bool isNameSet = false;
string name;
Console.WriteLine( isNameSet ? name : "No name set." );
अशक्त सहवास:
string name = null;
Console.WriteLine( name ?? "No name set." );
इन ऑपरेटरों का आविष्कार इसलिए किया गया क्योंकि वे बहुत ही सामान्य प्रोग्रामिंग कार्यों का प्रतिनिधित्व करते हैं । आप उनका उपयोग नहीं करना चाहते हैं, क्योंकि आप उनका उपयोग नहीं कर रहे हैं, बस जिद्दी हैं । भाषाएँ विकसित होती हैं, सुविधाएँ विकसित होती हैं, उनका उपयोग करना सीखें!
var कीवर्ड
मेरे पास var keyword के बारे में कुछ अलग राय है। एक चर का प्रकार अक्सर आपके कोड के बारे में अतिरिक्त जानकारी देता है। मुझे लगता है कि कभी-कभी var कीवर्ड का उपयोग करके टाइप को छिपा दिया जाता है, जिससे कोड कम पठनीय हो जाता है। आप कम जानते हैं कि ऑटो पूरा करने का उपयोग किए बिना क्या उम्मीद है, या पहचानकर्ताओं को देखने के लिए कि वे वास्तव में क्या हैं। मेरी राय में, यह कोड में परिणाम है जो पढ़ने / लिखने के लिए धीमा है।
मैं कीवर्ड का उपयोग तब करता हूं जब मुझे पता चलता है कि प्रकार बहुत अतिरिक्त जानकारी नहीं देता है।
- मुख्य रूप से फोरच लूप्स में , जो मैंने रेस्परर से सीखा क्योंकि यह एक सेटिंग है। अधिकांश समय, आप जानते हैं कि आप किस प्रकार के संग्रह का पता लगा रहे हैं, इसलिए आप जानते हैं कि आप उस संग्रह के भीतर से आइटम की अपेक्षा कर रहे हैं।
- लिनक प्रश्न । Linq प्रश्नों का परिणाम अक्सर बहुत जटिल सामान्य प्रकार के होते हैं। इस प्रकार का प्रदर्शन अच्छे से अधिक नुकसान करता है।
- लंबे टाइपनेम जो केवल उनके कंस्ट्रक्टर के साथ आरंभिक होते हैं। आप पहले से ही बता सकते हैं कि कंस्ट्रक्टर को देखकर क्या प्रकार है।
अंतिम कथन के लिए एक उदाहरण के रूप में:
ThisIsSomeSpecializedTypeRightHere duplication =
new ThisIsSomeSpecializedTypeRightHere();
var justAsReadable =
new ThisIsSomeSpecializedTypeRightHere(); // Less duplication.
// But I still prefer the following ...
int number = 9;
SomeCreatedType foo = Factory.CreateSomeType();
??
समझाए जाने के बाद अशक्त मोटे ऑपरेटर को समझा नहीं जा सकता है, तो उन्हें उत्पादन कोड के पास अनुमति नहीं दी जानी चाहिए।