विरासत कोड के रीफैक्टरिंग का अभ्यास करने के लिए कटिंग कटास


123

मैंने हाल के महीनों में कटास कोडिंग में काफी दिलचस्पी ली है। मेरा मानना ​​है कि वे मेरे प्रोग्रामिंग कौशल को सुधारने और कोड की गुणवत्ता में सुधार करने का एक शानदार तरीका हैं जो मैं नौकरी पर लिखता हूं।

ऐसे कई स्थान हैं जहाँ कटास पाए जा सकते हैं। पसंद..

http://codekata.pragprog.com/

http://schuchert.wikispaces.com/Katas

http://www.codingdojo.org/

मैंने इन्हें कटास के उत्कृष्ट भंडार के रूप में पाया है ... उनमें से कुछ पर मेरे प्रयास काफी पुरस्कृत हुए हैं।

हालाँकि, मुझे लगता है कि मैंने अब तक जितने भी काटा हैं, उनमें से एक को कम आना है। उनमें से कोई भी मुझे खराब कोड को फिर से भरने का अभ्यास करने की अनुमति नहीं देता है। यह बहुत अच्छी बात है कि पहली बार स्वच्छ कोड कैसे लिखना है ... लेकिन अपनी वर्तमान नौकरी में, मेरे पास नए कोड लिखने के बहुत अधिक अवसर नहीं हैं। बल्कि मैं अक्सर विरासत कोड के खिलाफ जूझ रहा हूं और यह पता लगाने की कोशिश कर रहा हूं कि कैसे रिफ्लेक्टर मॉड्यूल, निर्भरता को खत्म करना, और युग्मन को कम करना है।

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

क्या किसी को किसी के बारे में पता है जो पहले से मौजूद है? मुझे पता है कि काम पर होने के दौरान मुझे इस पर बहुत अभ्यास होता है ... लेकिन मैं अपने कौशल को उस बिंदु पर ले जाना चाहता हूं, जहां मैं जल्दी से देख सकता हूं कि कक्षाओं में अलग-अलग निर्भरता और अलग-अलग चिंताओं को कैसे समाप्त किया जाए बहुत दूर है।


+1 अच्छा प्रश्न, उपयोगी जानकारी प्रदान करने के साथ
KLE

काश, मैं +1 से अधिक दे पाता :) महान प्रश्न। मैंने प्रोग्रामिंग के लिए इस तरह के अभ्यास के बारे में कभी सोचा भी नहीं है ...
पतन

मैं किसी को देखने के लिए वास्तव में विरासत कोड के refactoring के लिए एक छोटी सी प्रणाली पोस्ट करने के लिए प्यार करता हूँ ... कुछ है कि जहां माइकल पंख 'refactorings चमक होगा भागों है। मैं एक हफ्ते से अब इस फॉर्मूले की तरह कुछ खोज रहा हूं। किसी को? किसी को? :)
डेरिक बेली

अच्छा प्रश्न। आप अपने उत्तर में उल्लिखित @Ryan का अभ्यास कर सकते हैं। मेरा सुझाव है कि एक जिठुब रिपॉजिटरी को फोर्क करें: github.com/garora/TDD-Katas आप इतिहास में जा सकते हैं और जांच सकते हैं कि ये कट्स कैसे रिफैक्ट हो जाते हैं।
गौरव अरोरा

जवाबों:


92

मुझे उस साइट का पता नहीं है जो उन्हें सीधे सूचीबद्ध करती है, लेकिन एक रणनीति जो मैंने इस अवसर पर उपयोग की है वह है:

  1. Sourceforge पर एक पुरानी, ​​छोटी, बिना मान्यता प्राप्त ओपन सोर्स परियोजना खोजें
  2. इसे डाउनलोड करें, इसे संकलन / निर्माण / चलाने के लिए प्राप्त करें
  3. प्रलेखन पढ़ें, कोड के लिए एक महसूस करें
  4. परीक्षण के तहत इसका एक टुकड़ा पाने के लिए विरासत कोड के साथ प्रभावी ढंग से काम करने में तकनीकों का उपयोग करें
  5. उस टुकड़े को रिफलेक्टर, शायद कीड़े को ठीक करना और रास्ते में सुविधाओं को जोड़ना
  6. 6 के माध्यम से चरण 4 को दोहराएं

जब आपको एक ऐसा भाग मिल जाए जो विशेष रूप से चुनौतीपूर्ण था, तो अपने काम को फेंक दें और अपने कौशल को सुदृढ़ करने के लिए इसे दो बार दोहराएं।

यह केवल रीफैक्टरिंग का अभ्यास नहीं करता है, लेकिन अन्य कौशल जैसे कोड पढ़ना, परीक्षण और निर्माण प्रक्रियाओं से निपटना।

सबसे कठिन समस्या एक ऐसी परियोजना की तलाश कर रही है जिसमें आप काम करने के लिए पर्याप्त रुचि रखते हैं। मैंने जिस पर काम किया था वह आनुवंशिक प्रोग्रामिंग के लिए एक पायथन पुस्तकालय था, और वर्तमान में मैं जिस पर काम कर रहा हूं वह जावा के लिए एक आईआरसी पुस्तकालय है।


4
+1 बहुत रोचक सुझाव। जैसा कि आपने कहा, मुश्किल बात एक उपयुक्त परियोजना है। मैं इस पर बहुत विचार करूंगा। शायद अगर मैं, या अन्य, कुछ ऐसा पाते हैं जो बहुत उपयोगी हो तो इसे काटा के रूप में कहीं और सहेजा जा सकता है ...
mezoid

3
"लिगेसी कोड से निपटना" - क्या आपका मतलब है "लिगेसी कोड के साथ प्रभावी ढंग से काम करना"? amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/…
TrueWill

1
हां, मेरा मतलब है "विरासत कोड के साथ प्रभावी ढंग से काम करना"। पकड़ने के लिए धन्यवाद!
रियान

21

मुझे लगता है कि इस तरह के एक पुराने धागे का जवाब देने वाले नेक्रोमन्ट हैं, लेकिन एक चीज है जो एक योग्य जोड़ के लिए करेगी - लिगेसी रिट्रीट

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

वहाँ एक है GitHub भंडार विचार के लेखक, जेबी Rainsberger, कि एक साधारण विरासत प्रणाली है कि आप के साथ काम करने के लिए कर रहे हैं, रोचक गेम शामिल द्वारा।

आयोजक / प्रतिभागी के रूप में मेरे अनुभव से, लोगों को वास्तव में यह पसंद आया और यह देखना रोशन हो गया कि एक विरासत कोड में क्या समस्या हो सकती है और जहां आपके रिफैक्टरिंग से आप भटक सकते हैं (और कैसे!)। यहाँ अभी तक कैसे यह कैसा दिखाई देता द्वारा की किसी अन्य खाते है एंड्रियास Leidig


20

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

इसके अलावा, वह अपने रेपो में रेसिंग कार कटास: रेसिंग कार काटा है । रेस कार कट्स में रीफैक्टरिंग के लिए अच्छे व्यायाम भी शामिल हैं।

उन काटा में कई भाषाओं में कोड है:

  • सी ++
  • सी#
  • जावा
  • जावास्क्रिप्ट
  • अजगर
  • माणिक

4
एमिली ने द कोडिंग डोजो हैंडबुक पुस्तक भी प्रकाशित की है जिसमें कटास को सूचीबद्ध किया गया है और यह वर्णन करता है कि अपने स्वयं के कोडिंग डोज को कैसे शुरू करें और चलाएं। मैं पुस्तक की अत्यधिक अनुशंसा करता हूं: leanpub.com/codingdojohandbook
क्रिश्चियन

1
मैंने उसकी किताब को डोज चलाने के लिए इस्तेमाल किया है, और मैं मानता हूं कि यह एक उत्कृष्ट संसाधन है। एमिली का एक संबंधित कोर्स है pluralsight.com/courses/the-coding-dojo, साथ ही।
स्टीव क्लैंटन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.