Mã hóa Katas để thực hành tái cấu trúc mã kế thừa


123

Tôi đã khá quan tâm đến việc mã hóa katas trong những tháng gần đây. Tôi tin rằng họ là một cách tuyệt vời để trau dồi kỹ năng lập trình của tôi và cải thiện chất lượng mã tôi viết trong công việc.

Có rất nhiều nơi Katas có thể được tìm thấy. giống..

http://codekata.pragprog.com/

http://schuchert.wikispaces.com/Katas

http://www.codingdojo.org/

Tôi đã tìm thấy những thứ này là kho lưu trữ tuyệt vời của Katas ... những nỗ lực của tôi đối với một số trong số chúng đã được đền đáp vô cùng.

Tuy nhiên, tôi cảm thấy rằng tất cả các Kata của tôi đã thấy cho đến nay có một sắp tới. Không ai trong số họ dường như cho phép tôi thực hành tái cấu trúc mã xấu. Thật tuyệt vời khi học cách viết mã sạch lần đầu tiên ... nhưng trong công việc hiện tại, tôi không có quá nhiều cơ hội để viết mã mới. Thay vào đó, tôi thường chiến đấu chống lại mã kế thừa và cố gắng tìm ra cách cấu trúc lại các mô-đun, loại bỏ các phụ thuộc và giảm khớp nối.

Như vậy, tôi đang tìm kiếm một vài Katas mà tôi có thể sử dụng để trau dồi kỹ năng tái cấu trúc mã kế thừa và biến nó thành mã sạch.

Có ai biết bất kỳ cái nào đã tồn tại? Tôi biết tôi đã thực hành rất nhiều trong khi tôi đang làm việc ... nhưng tôi muốn trau dồi kỹ năng của mình đến mức tôi có thể nhanh chóng thấy cách phá vỡ sự phụ thuộc và tách biệt mối quan tâm trong các lớp học làm quá nhiều


+1 câu hỏi hay, với thông tin hữu ích được cung cấp
KLE

Tôi ước tôi có thể cho nhiều hơn +1 :) Câu hỏi tuyệt vời. Tôi thậm chí chưa bao giờ nghĩ về loại thực hành này để lập trình ...
FallenAvatar

Tôi rất muốn thấy ai đó thực sự đăng một hệ thống nhỏ đặc biệt để tái cấu trúc mã kế thừa ... thứ gì đó có các phần mà phép tái cấu trúc của Michael Feathers sẽ tỏa sáng. Tôi đã tìm kiếm một cái gì đó giống như hình thức này hơn một tuần nay. bất kỳ ai? bất kỳ ai? :)
Derick Bailey

Câu hỏi hay. Bạn có thể thực hành những gì @Ryan đã đề cập trong bài trả lời của mình. Tôi đề nghị rẽ nhánh một kho lưu trữ giithub: github.com/garora/TDD-Katas Bạn có thể đi vào lịch sử và kiểm tra xem những Katas này được tái cấu trúc như thế nào.
Gaurav Aroraa

Câu trả lời:


92

Tôi không biết về một trang web phân loại chúng trực tiếp, nhưng một chiến lược mà tôi đã sử dụng trong dịp này là:

  1. Tìm một dự án nguồn mở cũ, nhỏ, không rõ ràng trên sourceforge
  2. Tải về nó, tải về để biên dịch / xây dựng / chạy
  3. Đọc tài liệu, cảm nhận mã
  4. Sử dụng các kỹ thuật trong Làm việc hiệu quả với Mã di sản để kiểm tra một phần của nó
  5. Tái cấu trúc mảnh đó, có thể sửa lỗi và thêm các tính năng trên đường đi
  6. Lặp lại các bước 4 đến 6

Khi bạn tìm thấy một phần đặc biệt thách thức, hãy vứt bỏ công việc của bạn và lặp lại nó một vài lần để củng cố các kỹ năng của bạn.

Điều này không chỉ thực hành tái cấu trúc, mà các kỹ năng khác như đọc mã, kiểm tra và xử lý các quy trình xây dựng.

Vấn đề khó nhất là tìm một dự án mà bạn đủ quan tâm để tiếp tục làm việc. Cái cuối cùng tôi làm là một thư viện python để lập trình di truyền, và dự án hiện tại tôi đang làm là thư viện IRC cho Java.


4
+1 gợi ý rất thú vị. Giống như bạn đã nói, điều khó khăn là tìm một dự án thích hợp. Tôi sẽ cân nhắc điều này. Có lẽ nếu tôi hoặc những người khác tìm thấy một số thứ rất hữu ích thì nó có thể được lưu và ghi lại ở đâu đó dưới dạng Kata ...
mezoid

3
"Xử lý mã kế thừa" - bạn có nghĩa là "Làm việc hiệu quả với mã kế thừa"? amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/iêu
TrueWill

1
Có, tôi có nghĩa là "Làm việc hiệu quả với Mã kế thừa". Cảm ơn đã bắt!
Ryan

21

Tôi cảm thấy như necromancer trả lời một chủ đề cũ như vậy, nhưng có một điều sẽ làm cho một bổ sung xứng đáng - Legacy Code Retreat .

Ý tưởng là có một Code Retreat với mã kế thừa và cố gắng thực hành chính các kỹ thuật để xử lý như vậy, nhưng tôi không thể thấy bất cứ điều gì có thể cấm bạn chỉ đơn giản là sử dụng mã được chuẩn bị và tự thực hành với nó. Chỉ cần sử dụng nó để tạo Golden Master sẽ giúp bạn có một giờ làm việc, và bạn có thể làm được nhiều hơn thế. Nếu kata của bạn thường kéo dài khoảng 2 giờ, tôi sẽ nói chỉ bằng cách chia những gì thường xảy ra trên LCR thành kata mang lại cho bạn bốn điều khác nhau để làm việc.

kho lưu trữ GitHub của tác giả ý tưởng, JB Rainsberger, có chứa một hệ thống di sản đơn giản mà bạn sẽ làm việc với, Trivia Game.

Từ kinh nghiệm của tôi với tư cách là người tổ chức / người tham gia, mọi người thực sự thích điều này và thật sáng sủa để xem điều gì có thể là vấn đề trong mã kế thừa và việc tái cấu trúc của bạn có thể khiến bạn lạc lối (và làm thế nào!). Đây là một tài khoản khác về việc nó trông như thế nào, bởi Andreas Leidig .


20

Emily Bache có một kho lưu trữ github với một số katas tái cấu trúc: Tái cấu trúc Kata Repo của Emily Bache . Có các biến thể của KataYahtzee và KataTennis để tái cấu trúc. Ngoài ra, cô có một biến thể của Gilded Rose Kata, được thiết kế như một kata tái cấu trúc.

Ngoài ra, cô ấy còn có Racing Car Katas trong repo của mình: Racing Car Kata . Race Car Katas cũng bao gồm các bài tập tốt để tái cấu trúc.

Những kata có mã trong nhiều ngôn ngữ:

  • C ++
  • C #
  • Java
  • Javascript
  • Con trăn
  • Hồng ngọc

4
Emily cũng đã xuất bản cuốn sách Cẩm nang mã hóa Dojo liệt kê Katas và mô tả cách bắt đầu và chạy võ đường mã hóa của riêng bạn. Tôi đánh giá cao cuốn sách: leanpub.com/codingdojohandbook
Christian Maslen

1
Tôi đã sử dụng cuốn sách của cô ấy để chạy dojos và tôi đồng ý rằng đó là một tài nguyên tuyệt vời. Emily cũng có một khóa học liên quan tại pluralsight.com/cifts/the-coding-dojo.
Steve Clanton
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.