2008-09-28 12 views
10

कक्षाओं की आदर्श संख्या आपको एक नामस्थान "शाखा" के आधार पर कितनी कक्षाएं आदर्श मानती हैं? किस बिंदु पर एक नामस्थान को एकाधिक में तोड़ने का फैसला करेगा? आइए कक्षाओं के लॉजिकल ग्रुपिंग पर चर्चा न करें (मान लीजिए कि वे तर्कसंगत रूप से समूहबद्ध हैं), मैं इस बिंदु पर, बनाए रखने योग्य बनाम वर्गों की रखरखाव संख्या पर केंद्रित नहीं हूं।प्रति नामस्थान शाखा

उत्तर

27

"42 नहीं, यह काम नहीं करता है ...?"

ठीक है, चलो हमारे प्रोग्रामिंग कौशल काम करते हैं और देखते हैं माइक्रोसॉफ्ट का विचार यह है कि क्या करने के लिए रखा है:

# IronPython 
import System 
exported_types = [ 
    (t.Namespace, t.Name) 
    for t in System.Int32().GetType().Assembly.GetExportedTypes()] 

import itertools 
get_ns = lambda (ns, typename): ns 
sorted_exported_types = sorted(exported_types, key=get_ns) 
counts_per_ns = dict(
    (ns, len(list(typenames))) 
    for ns, typenames 
    in itertools.groupby(sorted_exported_types, get_ns)) 
counts = sorted(counts_per_ns.values()) 

print 'Min:', counts[0] 
print 'Max:', counts[-1] 
print 'Avg:', sum(counts)/len(counts) 
print 'Med:', 
if len(counts) % 2: 
    print counts[len(counts)/2] 
else: # ignoring len == 1 case 
    print (counts[len(counts)/2 - 1] + counts[len(counts)/2])/2 

और यह हमें देता है नाम स्थान प्रति प्रकार की संख्या पर आंकड़े अगले:

C:\tools\nspop>ipy nspop.py 
Min: 1 
Max: 173 
Avg: 27 
Med: 15 
8

आधुनिक आईडीई और अन्य देव उपकरण के साथ, मैं कहूंगा कि यदि सभी वर्ग नामस्थान में हैं, तो कोई मनमाना संख्या नहीं है जिस पर आपको रखरखाव के लिए नामस्थान को तोड़ना चाहिए।

+1

आधुनिक आईडीई के साथ स्वत: पूर्ण नाम प्रति नाम 10 के वर्गों के साथ स्वत: पूर्ण हो जाता है। – Constantin

+1

मैं वास्तव में कोशिश कर रहा हूं, 10k कक्षाओं (!?!?) के करीब किसी भी प्रणाली के साथ सिस्टम को कल्पना करना मुश्किल है, खासतौर पर सभी एक नामस्थान में। –

+3

नेट फ्रेमवर्क, पूरी तरह से, केवल 5k प्रकार क्या है? और यह एक सौ या तो नामस्थानों में टूट गया है –

0

मुझे पता है कि आप लॉजिकल ग्रुपिंग पर चर्चा नहीं करना चाहते हैं, हालांकि एक अलग करने के लिए आपको दो अलग-अलग नामस्थानों को समूहबद्ध करने में सक्षम होना चाहिए। मैं लगभग 30 कक्षाओं में एक नया नामस्थान पर विचार करना शुरू कर दूंगा; हालांकि मैं इसे एक प्रमुख चिंता नहीं मानूंगा।

3

मुझे लगता है कि एक नामस्थान जितना बड़ा होना चाहिए उतना बड़ा होना चाहिए। यदि भाई नेमस्पेस या बाल नामस्थान बनाने का कोई तार्किक कारण है, तो ऐसा करें। जैसा कि मैंने इसे नामस्थानों में विभाजित करने का मुख्य कारण विकास को कम करना है, जिससे डेवलपर्स के लिए नामस्थान पदानुक्रम पर नेविगेट करना आसान हो जाता है ताकि उन्हें क्या चाहिए।

यदि आपके पास कई प्रकार के साथ एक नामस्थान है, और आपको लगता है कि कुछ लोगों को ढूंढना मुश्किल है, तो उन्हें किसी अन्य नामस्थान पर ले जाने पर विचार करें। यदि बच्चे मूल नामस्थान प्रकार के विशेषज्ञ हैं, और एक भाई नेमस्पेस यदि मूल नामस्थान प्रकार के बिना प्रकार का उपयोग किया जा सकता है या एक अलग उद्देश्य है, तो मैं एक बच्चे के नामस्थान का उपयोग करूंगा। बेशक, यह सब आप जो बना रहे हैं और लक्षित दर्शकों पर निर्भर करता है।

यदि किसी नामस्थान में 20 से कम प्रकार हैं, तो यह विभाजन के लायक होने की संभावना नहीं है। हालांकि, आपको डिज़ाइन के दौरान नेमस्पेस आवंटन पर विचार करना चाहिए ताकि विकास के दौरान आप आगे बढ़ सकें, किस प्रकार के नामस्थान में जाएं। यदि आप विकास के दौरान नेमस्पेस आवंटन करते हैं, तो आप बहुत से रिफैक्टरिंग की अपेक्षा करते हैं क्योंकि आप यह निर्धारित करते हैं कि कहां जाना चाहिए।

0

मैं मैं ऊपर बहुत ही आश्चर्य पढ़ने के सभी को खोजने कहना होगा।

उपयोगिता विशेषज्ञ हमें मेनू में विकल्पों की संख्या सीमित संख्या में रखने के लिए कहते हैं ताकि हम तुरंत सभी विकल्पों को देख सकें। यह आपके काम को व्यवस्थित करने के तरीके पर भी लागू होता है।

मैं आम तौर पर नामस्थान में 4-10 प्रकार की अपेक्षा करता हूं। सामान के लिए इतना शिकार दौर बचाता है और ऊपर और नीचे स्क्रॉल करता है। Resharper का उपयोग कर सामान को स्थानांतरित करना इतना तेज़ और आसान है कि मुझे ऐसा कोई कारण नहीं दिख रहा है कि क्यों नहीं।

+1

इतना यकीन नहीं है कि मैं इस विचार से सहमत हूं कि यह कक्षाओं के लिए समय शिकार को बचाएगा। यदि 4-से-10 आइटम दिशानिर्देशों के उपज के रूप में आप एक गहन पदानुक्रम के साथ समाप्त होते हैं, तो मुझे लगता है कि वास्तव में चीजों की तलाश में अधिक समय लगेगा। – Larsenal

0

एक और बात जो उल्लेख की जानी चाहिए वह यह है कि यह अक्सर अपने नामस्थान में एक्सटेंशन विधियों वाले वर्ग को रखने का भुगतान करता है, ताकि आप using निर्देश के साथ उन एक्सटेंशन विधियों को सक्षम या अक्षम कर सकें। तो यदि नामस्थान में बात एक स्थिर वर्ग है जिसमें विस्तार विधियां हैं, तो जवाब 1.

1

एक चीज जो यहां शामिल नहीं है, हालांकि यह क्रिस के बिंदु से संबंधित है, यह है कि एक सीखने योग्यता नामस्थान केवल वस्तुओं की संख्या से संबंधित नहीं है।एक enum एक वर्ग में ही सामान्य अर्थ में एक namespace है कि यह कुछ ऐसे नाम हैं जो वे किसी अन्य रूप में हो सकता है की तुलना में इस संदर्भ में एक अलग बात है इसका मतलब यह होता है, -

(संयोग से, यह करने के लिए "नाम स्थान" लागू होता है व्यापक अर्थ में इस अर्थ में भी एक नामस्थान है)।

मान लें कि मुझे तत्व कक्षा के साथ एक एक्सएमएल से संबंधित नामस्थान का सामना करना पड़ता है। मैं इसके बारे में कुछ सीखता हूं और जब मैं विशेषता कक्षा को देखता हूं, तो मुझे कुछ समानता दिखाई देती है। जब मैं प्रोसेसिंग इंस्ट्रक्शन कक्षा देखता हूं, तो मैं यह कैसे काम करता हूं इसके बारे में एक उचित अनुमान लगा सकता हूं (और शायद यह एक डिज़ाइन दोष है यदि मुझे लगता है कि पूरी तरह गलत है, तो सर्वोत्तम मतभेदों को केवल दस्तावेज करने की आवश्यकता नहीं है, लेकिन समझाया गया है)। मुझे लगता है कि एक टिप्पणी कक्षा है इससे पहले कि मैं इसे देख सकूं। मैं आपके टेक्स्ट नोड कक्षा की तलाश करूँगा और आश्चर्यचकित हूं कि क्या इन सभी को दस्तावेज़ों के बारे में जानने के बजाय नोड से प्राप्त होता है। मुझे आश्चर्य होगा कि आपने लैंग कक्षा के साथ कई उचित दृष्टिकोणों को लेकर आश्चर्यचकित किया है कि यह वहां है या नहीं।

क्योंकि यह सब एक डोमेन मैं पहले से ही का ज्ञान होना से संबंधित है, वैचारिक इन सात वर्गों में से "लागत" बहुत, अगर सात वर्गों जहां कहा जाता है की तुलना में कम, भेड़, टेलीविजन, FallOfSaigon है , Enuii, AmandaPalmersSoloWork, ForArtsSakeQuotient और DueProcess

यह चिर्स के बिंदु से संबंधित है, क्योंकि वह कहता है कि हमें विकल्पों की संख्या को कम रखने के लिए उपयोगिता के लिए सलाह दी जाती है। हालांकि, अगर हमारे पास वर्णमाला क्रम में देशों का विकल्प है, तो हम तुरंत पूरी सूची को गले लगाते हैं और हमें तुरंत इसकी आवश्यकता होती है, इसलिए विकल्पों को नीचे रखने की सलाह लागू नहीं होती है (वास्तव में, एक समय में कुछ विकल्प दोनों हो सकते हैं कम उपयोगी और संभावित अपमानजनक)।

अपने नाम स्थान 200 नाम हैं, लेकिन आप केवल वास्तव मेंकरने के लिए है बहुत कुछ समझने के लिए है, तो यह बहुत एक दूसरे से थोड़ा संबंध के साथ एक दर्जन से अधिक नामों की तुलना में grok करने के लिए आसान हो जाएगा आधा दर्जन जानें।

संबंधित मुद्दे