Tôi hiện đang tái cấu trúc một phần của một cơ sở mã lớn mà không có đơn vị nào kiểm tra bất cứ điều gì. Tôi đã cố gắng cấu trúc lại mã theo cách tàn bạo, tức là bằng cách đoán mã đang làm gì và những thay đổi nào sẽ không thay đổi ý nghĩa của nó, nhưng không thành công: nó phá vỡ ngẫu nhiên các tính năng xung quanh cơ sở mã.
Lưu ý rằng tái cấu trúc bao gồm di chuyển mã C # kế thừa sang kiểu chức năng hơn (mã kế thừa không sử dụng bất kỳ tính năng nào của .NET Framework 3 trở lên, bao gồm cả LINQ), thêm các tổng quát trong đó mã có thể được hưởng lợi từ chúng, v.v.
Tôi không thể sử dụng các phương pháp chính thức , với giá bao nhiêu.
Mặt khác, tôi cho rằng ít nhất "Bất kỳ mã kế thừa được tái cấu trúc nào cũng phải đi kèm với các thử nghiệm đơn vị" phải được tuân thủ nghiêm ngặt, bất kể nó có giá bao nhiêu. Vấn đề là khi tôi cấu trúc lại một phần nhỏ của phương thức riêng 500 LỘC, việc thêm các bài kiểm tra đơn vị dường như là một nhiệm vụ khó khăn.
Điều gì có thể giúp tôi biết các bài kiểm tra đơn vị nào có liên quan đến một đoạn mã nhất định? Tôi đoán rằng phân tích tĩnh của mã bằng cách nào đó sẽ hữu ích, nhưng các công cụ và kỹ thuật tôi có thể sử dụng để:
Biết chính xác những bài kiểm tra đơn vị tôi nên tạo,
Và / hoặc biết nếu thay đổi tôi đã thực hiện có ảnh hưởng đến mã gốc theo cách mà nó đang thực thi khác với bây giờ không?
formal methods in software development
vì nó được sử dụng để chứng minh tính đúng đắn của chương trình sử dụng logic vị ngữ và sẽ không có khả năng tái cấu trúc một cơ sở mã lớn. Các phương thức chính thức thường được sử dụng để chứng minh mã hoạt động chính xác trong các lĩnh vực như ứng dụng y tế. Bạn đúng là rất tốn kém để làm điều đó là lý do tại sao nó không được sử dụng thường xuyên.