स्यूडोकोड प्रोग्रामिंग प्रक्रिया बनाम टेस्ट प्रेरित विकास

वोट
16

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

जो लोग दोनों दृष्टिकोण की कोशिश की है, जो आप करना चाहते हैं की - मेरा प्रश्न है?

03/10/2008 को 22:44
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


6 जवाब

वोट
4

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

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

मैं कहूंगा कि सबसे अच्छा शर्त TDD उपयोग करने के लिए है। कुंजी को एहसास है कि TDD मतलब यह नहीं है "की योजना बना छोड़" है। TDD कर नियोजन का एक छोटा सा अच्छी तरह से शुरू करने के लिए, और उन्हें आवश्यकतानुसार समायोजित का मतलब है। तुम भी समायोजित करने की आवश्यकता नहीं हो सकता है।

03/10/2008 को 22:51
का स्रोत उपयोगकर्ता

वोट
3

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

अगर, दूसरे हाथ पर, समस्या है जटिल है, मैं यह कैसे दृष्टिकोण के माध्यम से सोचने के लिए इससे पहले कि मैं भी एक प्रारंभिक अनुभवहीन समाधान लिख सकते हैं की जरूरत है - मैं अभी भी मैं कोड से पहले की योजना के लिए की जरूरत है; मैं शुरू में क्या लिखेंगे का अंग्रेजी वर्णन है, तो एक परीक्षण दोहन, तो अनुभवहीन समाधान कोड है, तो शोधन: इसलिए, मैं दोनों तरीकों का एक संयोजन का उपयोग करें।

03/10/2008 को 22:55
का स्रोत उपयोगकर्ता

वोट
1

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

गतिशील भाषाओं (विशेष रूप से रूबी) में, मैं अत्यधिक TDD सलाह देते हैं, यह है कि अन्य भाषाओं संकलन समय पर पकड़ा है | आप त्रुटियों को पकड़ने में मदद मिलेगी।

एक बड़े, जटिल प्रणाली में, और अधिक डिजाइन आप बेहतर बंद आप हो जाएगा अग्रिम है। ऐसा लगता है कि जब मैं एक बड़ी परियोजना के लिए हर क्षेत्र है कि मैं हाथ लहराया तैयार किया गया है, और कहा कि "यह बहुत सीधे आगे होना चाहिए" एक बड़ी बात बाद में परियोजना में किया गया था लगता है।

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

03/10/2008 को 23:22
का स्रोत उपयोगकर्ता

वोट
1

सिर्फ इसलिए कि परीक्षण से गुजरता है, इसका मतलब यह नहीं बस हो गया।

TDD सबसे अच्छा की विशेषता है ग्रीन - - लाल Refactor

एक परीक्षण करने के बाद एक गोल लाइनों (दोनों में से) प्रदान करता है। यह सिर्फ पहला, आवश्यकताओं की कम से कम सेट है। वास्तविक लक्ष्य के रूप में "स्यूडोकोड प्रोग्रामिंग प्रक्रिया" या किसी भी डिजाइन अनुशासन एक ही लक्ष्य है।

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

पर्याप्त कोड डिजाइन एक परीक्षण योग्य इंटरफेस है। पर्याप्त परीक्षण डिजाइन यकीन है कि इंटरफेस काम करेंगे किया जाना है। कुछ और परीक्षण और कुछ और कार्यान्वयन डिजाइन जब तक आप refactor करने के लिए की जरूरत को देखते हैं।

वास्तविक लक्ष्य अच्छा सॉफ्टवेयर है। TDD "अच्छाई" बाहर नहीं कर सकते।

एक तकनीक एक प्रतिबंधक जनादेश नहीं है। एक तकनीक एक बैसाखी आप उत्पाद अच्छा कोड मदद करने के लिए के रूप में देखा जाना चाहिए। अगर मैं होशियार थे, अमीर और बेहतर दिखने, मैं TDD जरूरत नहीं होगी। लेकिन बाद से मैं के रूप में गूंगा के रूप में मैं कर रहा हूँ हूँ, मैं एक बैसाखी की जरूरत है मुझे refactor मदद करने के लिए।

04/10/2008 को 00:18
का स्रोत उपयोगकर्ता

वोट
0

मेरे लिए TDD एक इक्का pseudocoding बस के साथ प्रतिस्पर्धा नहीं कर सकते हैं - दोनों आप सार मदद और विकास की योजना है, लेकिन एक बार आप TDD देश में विकास पूरा हो जाने पर आप अभी भी इकाई परीक्षण है

के रूप में उपयोगी एक दृष्टिकोण के रूप CC2 वर्णित pseudocoding है, यह सिर्फ है कि मेल नहीं कर सकते हैं। TDD केवल डिजाइनिंग, यह भी एक कठोर पाड़ उपलब्ध कराने आपसे आगे परियोजना विकसित कर सकते हैं के बारे में आधा है। हालांकि मैं कोई कारण नहीं क्यों आप समस्याओं TDD सेट को हल करने के लिए स्यूडोकोड नहीं कर सकते हैं।

मैं बवाल विकसित नहीं होना चाहिए।
स्यूडोकोड मन हत्यारा है।
यह थोड़ा-मौत है कि परियोजना स्मृति गुमनामी लाता है।
मैं अपने 90 के कार्यप्रणाली का सामना करना पड़ेगा।
मैं इसे अनुमति देने के मेरे ऊपर और मुझे के माध्यम से पारित करने के लिए होगा।
और जब यह अतीत चला गया है मैं अपने रास्ते को देखने के लिए भीतरी आँख हो जाएगा।
कहाँ स्यूडोकोड चला गया है वहाँ TDD कर दिया जाएगा।
केवल यूनिट परीक्षण रहेगा।

(मुझे उस के लिए लौ नहीं करते कृपया, मैं केवल आधा गंभीर हूँ: पी)

05/01/2009 को 10:22
का स्रोत उपयोगकर्ता

वोट
6

मेरी टीम दोनों दृष्टिकोण मिक्स और इसे विकसित करने (कम से कम हमारे लिए) एक भयानक तरीका है। हम इकाई परीक्षण की जरूरत है क्योंकि हम एक बड़े और जटिल सॉफ्टवेयर सिस्टम है। लेकिन स्यूडोकोड प्रोग्रामिंग प्रक्रिया हाथों से नीचे सॉफ्टवेयर डिजाइन करने के लिए सबसे अच्छा तरीका मैं का सामना करना पड़ा है। बनाने के लिए उन्हें एक साथ काम करते हैं:

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

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

जाहिर प्रक्रिया वास्तव में कभी नहीं काफी रैखिक के रूप में के रूप में मैं का वर्णन किया है है - कार्यान्वयन के कुछ मोड़ मतलब हो सकता है कि हम उच्च स्तरीय डिज़ाइन को संशोधित करने की जरूरत है। लेकिन सामान्य तौर पर, समय से हम लिखने इकाई परीक्षण डिजाइन (विधि स्तर पर) वास्तव में काफी स्थिर है, इसलिए परीक्षा नए सिरे से लिखना के बहुत सारे के लिए कोई जरूरत नहीं।

02/04/2010 को 11:04
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more