การเข้ารหัส Katas สำหรับฝึกการปรับโครงสร้างของรหัสเดิม


123

ฉันค่อนข้างสนใจในการเข้ารหัส katas ในช่วงไม่กี่เดือนที่ผ่านมา ฉันเชื่อว่านี่เป็นวิธีที่ดีในการฝึกฝนทักษะการเขียนโปรแกรมและปรับปรุงคุณภาพของโค้ดที่ฉันเขียนในงาน

มีสถานที่มากมายที่สามารถพบ Katas ได้ ชอบ..

http://codekata.pragprog.com/

http://schuchert.wikispaces.com/Katas

http://www.codingdojo.org/

ฉันพบว่าสิ่งเหล่านี้เป็นที่เก็บข้อมูลที่ยอดเยี่ยมของ Katas ... ความพยายามของฉันในบางส่วนได้รับผลตอบแทนอย่างมาก

อย่างไรก็ตามฉันรู้สึกว่า Kata ทั้งหมดที่ฉันเห็นจนถึงตอนนี้มีเพียงช่วงเวลาสั้น ๆ ดูเหมือนจะไม่มีใครอนุญาตให้ฉันฝึกฝนการปรับโครงสร้างโค้ดที่ไม่ดี เป็นการเรียนรู้วิธีการเขียนโค้ดใหม่ ๆ เป็นครั้งแรก ... แต่ในงานปัจจุบันของฉันฉันไม่มีโอกาสเขียนโค้ดใหม่มากเกินไป แต่ฉันมักจะต่อสู้กับรหัสเดิมและพยายามหาวิธี refactor โมดูลกำจัดการพึ่งพาและลดการมีเพศสัมพันธ์

ด้วยเหตุนี้ฉันจึงมองหา Katas สองสามตัวที่ฉันสามารถใช้เพื่อฝึกฝนทักษะในการปรับโครงสร้างโค้ดเดิมและเปลี่ยนเป็นรหัสที่สะอาด

มีใครรู้บ้างว่ามีอยู่แล้ว? ฉันรู้ว่าฉันได้รับการฝึกฝนมากมายในขณะที่ฉันทำงาน ... แต่ฉันต้องการฝึกฝนทักษะของฉันจนถึงจุดที่ฉันสามารถดูวิธีแยกการพึ่งพาและแยกความกังวลในชั้นเรียนได้อย่างรวดเร็ว ทำมากเกินไป


+1 คำถามดีๆพร้อมข้อมูลที่เป็นประโยชน์
KLE

ฉันหวังว่าฉันจะให้มากกว่า +1 :) คำถามที่ดี ฉันไม่เคยคิดเกี่ยวกับการฝึกเขียนโปรแกรมประเภทนี้มาก่อน ...
FallenAvatar

ฉันชอบที่จะเห็นใครบางคนโพสต์ระบบเล็ก ๆ โดยเฉพาะสำหรับการปรับโครงสร้างโค้ดดั้งเดิม ... สิ่งที่มีส่วนที่การปรับโครงสร้างของ Michael Feathers จะเปล่งประกาย ฉันมองหารูปแบบนี้มานานกว่าหนึ่งสัปดาห์แล้ว ใคร? ใคร? :)
Derick Bailey

เป็นคำถามที่ดี คุณสามารถฝึกสิ่งที่ @Ryan พูดถึงในการตอบกลับของเขา ฉันขอแนะนำให้แยกที่เก็บ giithub: github.com/garora/TDD-Katasคุณสามารถเข้าไปดูในประวัติและตรวจสอบว่า Katas เหล่านี้ได้รับการ refactored อย่างไร
Gaurav Aroraa

คำตอบ:


92

ฉันไม่รู้จักไซต์ที่แค็ตตาล็อกโดยตรง แต่กลยุทธ์อย่างหนึ่งที่ฉันใช้ในบางครั้งคือ:

  1. ค้นหาโปรเจ็กต์โอเพ่นซอร์สเก่าเล็กที่ไม่ได้รับการดูแลบน sourceforge
  2. ดาวน์โหลดนำไปคอมไพล์ / สร้าง / รัน
  3. อ่านเอกสารทำความเข้าใจเกี่ยวกับรหัส
  4. ใช้เทคนิคในการทำงานอย่างมีประสิทธิภาพกับ Legacy Codeเพื่อรับชิ้นส่วนของมันภายใต้การทดสอบ
  5. Refactor ชิ้นส่วนนั้นอาจแก้ไขข้อบกพร่องและเพิ่มคุณสมบัติไปพร้อมกัน
  6. ทำซ้ำขั้นตอนที่ 4 ถึง 6

เมื่อคุณพบส่วนที่ท้าทายเป็นพิเศษให้ทิ้งงานของคุณและทำซ้ำสองสามครั้งเพื่อเสริมสร้างทักษะของคุณ

สิ่งนี้ไม่เพียงแค่ฝึกฝนการปรับโครงสร้างเท่านั้น แต่ยังมีทักษะอื่น ๆ เช่นการอ่านโค้ดการทดสอบและการจัดการกับกระบวนการสร้าง

ปัญหาที่ยากที่สุดคือการค้นหาโปรเจ็กต์ที่คุณสนใจมากพอที่จะทำงานต่อไปอันสุดท้ายที่ฉันทำงานคือไลบรารี python สำหรับการเขียนโปรแกรมทางพันธุกรรมและสิ่งที่ฉันกำลังทำอยู่คือไลบรารี IRC สำหรับ Java


4
+1 คำแนะนำที่น่าสนใจมาก อย่างที่คุณกล่าวสิ่งที่ยุ่งยากคือการหาโครงการที่เหมาะสม ฉันจะพิจารณาเรื่องนี้ให้มาก บางทีถ้าฉันหรือคนอื่น ๆ พบบางอย่างที่มีประโยชน์มากมันอาจถูกบันทึกและบันทึกไว้ที่ไหนสักแห่งเป็นกะตะ ...
mezoid

3
"Dealing with Legacy Code" - คุณหมายถึง "Working อย่างมีประสิทธิผลกับ Legacy Code" หรือไม่ amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/…
TrueWill

1
ใช่ฉันหมายถึง "การทำงานอย่างมีประสิทธิภาพกับ Legacy Code" ขอบคุณสำหรับการจับ!
Ryan

21

ฉันรู้สึกเหมือนหมอผีตอบกลับไปเช่นด้ายเก่า แต่มีสิ่งหนึ่งที่จะทำให้ยังสมควร - Legacy รหัส Retreat

แนวคิดคือการมีCode Retreatพร้อมรหัสเดิมและพยายามฝึกฝนเทคนิคต่างๆในการจัดการกับสิ่งนั้น แต่ฉันไม่เห็นสิ่งใดที่จะห้ามคุณจากการใช้รหัสที่เตรียมและฝึกฝนด้วยตัวเอง เพียงแค่ใช้มันเพื่อสร้าง Golden Master ก็สามารถทำงานได้หนึ่งชั่วโมงและยังมีอะไรอีกมากมายที่คุณสามารถทำได้ ถ้ากะตะของคุณมักจะใช้เวลาประมาณ 2 ชั่วโมงฉันจะบอกว่าการแบ่งสิ่งที่มักเกิดขึ้นใน LCR ออกเป็นกะตะจะช่วยให้คุณทำงานได้สี่อย่าง

มีที่เก็บ GitHubโดยผู้เขียนไอเดีย JB Rainsberger ซึ่งมีระบบดั้งเดิมที่เรียบง่ายที่คุณต้องใช้งาน Trivia Game

จากประสบการณ์ของฉันในฐานะผู้จัดงาน / ผู้เข้าร่วมผู้คนชื่นชอบสิ่งนี้มากและเป็นการชี้ให้เห็นว่าอะไรอาจเป็นปัญหาในรหัสเดิมและการปรับโครงสร้างของคุณสามารถทำให้คุณหลงทางได้อย่างไร (และอย่างไร!) ที่นี่ยังบัญชีของวิธีการที่ดูเหมือนว่าอีกAndreas Leidig


20

เอมิลี่ Bache มีพื้นที่เก็บข้อมูล GitHub กับกาตะ refactoring บาง: เอมิลี่ Bache ของ Refactoring กะตะ Repo มี KataYahtzee และ KataTennis ที่หลากหลายเพื่อ refactor นอกจากนี้เธอยังมีรูปแบบของ Gilded Rose Kata ซึ่งได้รับการออกแบบมาเพื่อปรับโครงสร้างกะตะ

นอกจากนี้เธอมีรถแข่งกาตะใน repo ของเธอ: รถแข่งกะตะ Race Car Katas ยังมีแบบฝึกหัดที่ดีสำหรับการปรับโครงสร้าง

กะตะเหล่านั้นมีรหัสในหลายภาษา:

  • C ++
  • ค#
  • ชวา
  • จาวาสคริ
  • หลาม
  • ทับทิม

4
Emily ยังได้ตีพิมพ์หนังสือ The Coding Dojo Handbook ที่แสดงรายการ Katas และอธิบายวิธีเริ่มต้นและเรียกใช้ dojos การเข้ารหัสของคุณเอง ฉันขอแนะนำหนังสือเล่มนี้: leanpub.com/codingdojohandbook
Christian Maslen

1
ฉันใช้หนังสือของเธอเพื่อดำเนินการ dojos และฉันยอมรับว่าเป็นแหล่งข้อมูลที่ยอดเยี่ยม Emily มีหลักสูตรที่เกี่ยวข้องที่ pluralsight.com/courses/the-coding-dojo เช่นกัน
Steve Clanton
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.