2009-03-30 15 views
7

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

संपादित करें: वाह - पूरी तरह से, सर्वसम्मति से। मैं उदाहरण के लिए, कॉन्स बनाम गैर-कॉन्स निर्दिष्ट करने, संदर्भ पारित करने, डिफ़ॉल्ट कन्स्ट्रक्टर को संभालने और असाइन करने के बारे में संपूर्ण व्यवसाय के बारे में सोच रहा था। मुझे विश्वास है कि अब तक इस स्तर के विस्तार के बारे में इसे समझने में काफी मददगार रहा है। मुझे निश्चित रूप से एक स्पष्ट विचार मिल गया है कि सिस्टम कैसे काम करेगा। हो सकता है कि अगर मैं कोड में डाइविंग से पहले कुछ उदाहरणों के रूप में कुछ उदाहरण करता हूं?

उत्तर

4

चूंकि आप नए हैं, तो शायद यह ड्रिल करने के लिए समझ में आता है।

कारण: आप अभी भी भाषा को समझ रहे हैं और चीजें कैसे सर्वोत्तम रूप से संरचित हैं। इसका मतलब है कि आप शुरुआत में गलतियां करेंगे और आप दस्तावेज़ों को लगातार अद्यतन किए बिना उन्हें सही करना चाहते हैं।

+0

जेसन के जवाब को स्वीकार करते हुए इस बात की वजह से दस्तावेज पर वापस जाने के बारे में नहीं बताया गया। टीडीडी के लिए –

5

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

5

मैं इस स्तर पर जाने की अनुशंसा नहीं करता, लेकिन फिर आप पहले ही चले गए हैं जहां मैं एक डिजाइन विनिर्देश में जाऊंगा। मेरी व्यक्तिगत भावना यह है कि विस्तृत डिज़ाइन अप-फ्रंट में बहुत सारे प्रयासों को बर्बाद करने जा रहा है क्योंकि आप कोड विकसित करने में पता लगाते हैं कि आपके अनुमान यह है कि कोड कैसे काम करेगा, गलत है। मैं उच्च स्तरीय डिज़ाइन और कार्यान्वयन के मार्गदर्शन के लिए टीडीडी (टेस्ट संचालित विकास) का उपयोग करने के बारे में उच्च स्तरीय डिज़ाइन के साथ रहूंगा।

+0

+1, खासकर नौसिखिया सी ++ प्रोग्रामर की एक जोड़ी के लिए। त्रुटियों के ढेर होने जा रहे हैं, और परीक्षणों का एक सख्त सूट उनके खिलाफ सबसे अच्छा बचाव होगा। –

2

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

0

आप पहले ही प्रलेखन भाग के साथ काफी दूर चले गए हैं। जैसा कि आप अभी भी सी ++ में शुरुआती हैं, जब आप भाषा को समझेंगे, तो आप अपने कार्यक्रम की संरचना को बदलना चाहेंगे। फिर आपको दस्तावेज़ीकरण में बदलाव करना होगा। मैं सुझाव दूंगा कि आप पहले से ही दस्तावेज़ीकरण के साथ बहुत दूर चले गए हैं। इसमें अधिक ड्रिल करने की आवश्यकता नहीं

3

यह वास्तव में इस पर निर्भर करता है कि डिज़ाइन दस्तावेज़ किस पर लक्षित है। यदि यह ऐसे मालिक के लिए है जो गैर-तकनीकी है, तो आप जो भी रखते हैं उसके साथ अच्छे हैं।

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

यह निश्चित रूप से मुझे यह जानने में मदद करता है कि उदाहरण के लिए एक प्राधिकरण वर्ग में एक प्रमाणीकृत फ़ंक्शन हो सकता है जो उपयोगकर्ता ऑब्जेक्ट को पैरामीटर के रूप में लेता है। मुझे वास्तव में डिज़ाइन के दौरान परवाह नहीं है कि मुझे कुछ विशिष्ट लक्ष्य को पूरा करने के लिए आंतरिक स्ट्रिंग md5 फ़ंक्शन रैपर की आवश्यकता हो सकती है। कोडिंग करते समय मुझे इसके बारे में पता चला।

प्रारंभिक डिज़ाइन का लक्ष्य व्यवस्थित करना है ताकि आप उसी कार्य को 4 बार निकालने और पुन: कार्यान्वित करने के बजाय स्पष्टता और पूर्वविचार के साथ प्रगति कर सकें क्योंकि आप नियोजन के कारण कुछ परिदृश्य भूल गए हैं।

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

मैं php4 में बहुत काम करता हूं, इसलिए मुझे इंटरफेस का उपयोग नहीं करना पड़ता है। Php5 में, मैं इंटरफ़ेस बनाता हूं, फिर इसे कहीं और कार्यान्वित करता हूं।

0

हर किसी की तरह कहता है, आप जिस तरह से डिजाइन के साथ जाने की जरूरत है, वहां से आप चले गए हैं। क्या आपके पास उस डिज़ाइन से प्राप्त सरल/गलत कथन स्तर के लिए आवश्यकताओं का एक अच्छा सेट है? आप पूरे दिन डिज़ाइन कर सकते हैं, लेकिन यदि आपके पास ऐसी आवश्यकताएं नहीं हैं जो बस कहें कि आप क्या करने जा रहे हैं, इससे कोई फ़र्क नहीं पड़ता कि आपका डिज़ाइन कितना अच्छा है।

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