यदि मैं एक सामान्य प्रकार को लागू करता हूं जो बहुत से प्रकार के पैराम के साथ तत्काल होने का जोखिम उठाता है, तो क्या मुझे कई घोंसले वाले गैर-जेनेरिक प्रकारों से बचने के लिए (जेआईटी प्रदर्शन/कोड आकार इत्यादि के कारण) से बचना चाहिए?क्या मुझे जेनेरिक प्रकारों में नेस्टेड प्रकारों से बचना चाहिए?
उदाहरण:
public class MyGenericType<TKey, TValue>
{
private struct IndexThing
{
int row; int col;
}
private struct SomeOtherHelper
{
..
}
private struct Enumerator : IEnumerator<KeyValuePair<TKey, TValue>> { }
}
विकल्प है जो समान रूप से अच्छी तरह से काम करता है बाहर गैर-सामान्य प्रकार है, लेकिन फिर वे नामस्थान को दूषित। क्या कोई सर्वोत्तम अभ्यास है?
public class MyGenericType<TKey, TValue>
{
private struct Enumerator : IEnumerator<KeyValuePair<TKey, TValue>> { }
}
internal struct IndexThingForMyGenericType
{
int row; int col;
}
internal struct SomeOtherHelper
{
...
}
हमेशा बाधाओं को मारने के बिना हमेशा अनुकूलित नहीं होता है। बस एक तरह से कोड जो सबसे अधिक समझ में आता है, ज्यादातर यह एक समस्या नहीं होगी।सवाल के बारे में, मुझे नहीं पता लेकिन आप बीसीएल में बहुत से घोंसले वाले निजी वर्ग देख सकते हैं, इसलिए मुझे उस मार्ग पर जाने के लिए एक डिजाइन बिंदु से दिमाग नहीं होगा। जैसा कि आप कहते हैं दूसरा दूसरा भ्रमित हो सकता है – nawfal
यह कोड अर्थात् समान नहीं है। आपके पहले उदाहरण में 'SomeOtherHelper' एक प्रकार का नहीं है क्योंकि यह सामान्य पैरामीटर पर निर्भर करता है। उदाहरण के लिए, 'टाइपऑफ (MyGenericType.SomeOtherHelper) 'टाइपफ़ोफ़ (MyGenericType .SomeOtherHelper) जैसा नहीं है। –
Enigmativity
यदि आपकी समस्या नामस्थान में कक्षाएं हैं क्योंकि आप इसे क्लीनर चाहते हैं, तो इसे उप-नेमस्पेस में जोड़ें, उदाहरण के लिए यदि आपका नामस्थान MyNamespace है तो फिर MyNamespace.AccesoryNamespace में जोड़ें। – Gusman