मैं परीक्षण करना चाहता हूं कि कोई आईडी अभी तक ज्ञात नहीं है या, यदि यह ज्ञात है, तो संबंधित मान बदल गया है। मैं वर्तमान में इस तरह के कोड का उपयोग कर रहा हूं, लेकिन उन लोगों के लिए समझना मुश्किल है जो पैटर्न से परिचित नहीं हैं। क्या आप इसे एलओसी में कम रखते हुए इसे और अधिक पठनीय बनाने के तरीके के बारे में सोच सकते हैं?मैं इस शब्दकोश को TryGetValue कोड को और अधिक पठनीय कैसे बना सकता हूं?
string id;
string actual;
string stored;
if (!someDictionary.TryGetValue (id, out stored) || stored != actual) {
// id not known yet or associated value changed.
}
यह किसी भी 2-शर्त कथन के समान नहीं है क्योंकि इसे 'आउट' पैरामीटर की पूर्व-घोषणा की आवश्यकता है। "…इस्की आद्त डाल लो?" ऐसा नहीं है कि देव "भ्रमित" हैं, * प्रति * *। यहां तक कि एक अनुभवी प्रोग्रामर जो बाएं से दाएं को पढ़ता है, उसे पढ़ने के लिए आगे बढ़ना है, और इसे पढ़ने के लिए दिमाग में कई तत्वों को जोड़ना है। यह एक * कठिन * कार्य नहीं है, लेकिन यह प्राकृतिक नहीं है, या तो। यह कुछ हद तक प्रक्रियात्मक कोड है और पुनरावृत्ति और त्रुटि के अवसर प्रदान करता है। पठनीयता एक वैध चिंता है और 'बूल' परिणाम के साथ 'TryGetValue' अर्थात् कमजोर है। – Jay
@Jay: आप आउट वैरिएबल की घोषणा क्यों जांचेंगे? यह स्पष्ट रूप से वहां है (या संकलक शिकायत करेगा), और आपको इस बात परवाह नहीं करना चाहिए कि मूल्य पहले क्या था (चूंकि यह एक बाहरी है, इसलिए फ़ंक्शन द्वारा मूल्य का उपयोग नहीं किया जाता है)। क्या यह वास्तव में सशर्त के बजाय 'बाहर' के बारे में है? केवल एक ही बिंदु के बारे में मैं इस कथन पर स्वीकार करता हूं कि 1.) दुष्प्रभाव सशर्त में हैं, और 2.) सशर्त आदेश-निर्भर हैं। 'बूल आज़माएं * (बाहर)' बीसीएल में एक अच्छी तरह से स्थापित मुहावरे है कि मैं देवताओं को ग्रोक करने की उम्मीद करता हूं, इसलिए मैं पहले माफ कर देता हूं। –
@Jay: आपकी टिप्पणी "स्पॉट-ऑन" है। मेरी राय में, उत्तर में से कोई भी जवाब पठनीयता नहीं है। यही कारण है कि मैंने अपने सुझाए गए कोड का योगदान दिया। – AMissico