Chỉ đọc bốn chương đầu tiên của Refactoring: Improving the Design of Existing Code, tôi bắt tay vào việc tái cấu trúc đầu tiên và gần như ngay lập tức đến một rào cản. Nó bắt nguồn từ yêu cầu mà trước khi bạn bắt đầu tái cấu trúc, bạn nên đặt các xét nghiệm đơn vị xung quanh mã kế thừa. Điều đó cho phép bạn chắc chắn rằng việc tái cấu trúc của bạn không thay đổi mã ban đầu đã làm (chỉ cách nó đã thực hiện).Tái cấu trúc thực tế bằng cách sử dụng các bài kiểm tra đơn vị
Vì vậy, câu hỏi đầu tiên của tôi là: làm cách nào để thử nghiệm đơn vị một phương pháp trong mã cũ? Làm thế nào tôi có thể đặt một thử nghiệm đơn vị xung quanh một dòng 500 (nếu tôi may mắn) phương pháp mà không chỉ làm một nhiệm vụ? Dường như với tôi rằng tôi sẽ phải tái cấu trúc mã di sản của mình chỉ để làm cho nó có thể kiểm chứng được.
Có ai có bất kỳ hoạt động tái cấu trúc trải nghiệm nào bằng các thử nghiệm đơn vị không? Và, nếu có, bạn có bất kỳ ví dụ thực tế nào mà bạn có thể chia sẻ với tôi không?
Câu hỏi thứ hai của tôi hơi khó giải thích. Đây là một ví dụ: Tôi muốn cấu trúc lại một phương thức kế thừa để điền một đối tượng từ một bản ghi cơ sở dữ liệu. Tôi sẽ không phải viết một bài kiểm tra đơn vị so sánh một đối tượng được lấy ra bằng cách sử dụng phương pháp cũ, với một đối tượng được lấy ra bằng cách sử dụng phương pháp được cấu trúc lại của tôi? Nếu không, làm thế nào tôi biết rằng phương pháp tái cấu trúc của tôi tạo ra kết quả tương tự như phương pháp cũ? Nếu điều đó là đúng, thì tôi phải rời khỏi phương pháp cũ không được chấp nhận trong mã nguồn trong bao lâu? Tôi chỉ cần giật mình sau khi tôi kiểm tra một vài hồ sơ khác nhau? Hoặc, tôi có cần phải giữ nó trong một thời gian trong trường hợp tôi gặp phải một lỗi trong mã được cấu trúc lại của tôi không?
Cuối cùng, vì một vài người đã hỏi ... mã di sản ban đầu được viết bằng VB6 và sau đó được chuyển đến VB.NET với những thay đổi kiến trúc tối thiểu.
Câu hỏi hay. Bạn cũng có thể thử Katas, giúp bạn tạo thói quen viết mã tốt và cách bạn có thể viết mã kiểm tra đơn vị: https://github.com/garora/TDD-Katas –