Gần đây tôi đã đọc cuốn sách của Michael C. Feathers Working effectively with legacy code
và đi qua điểm mà ông đã đề cập đến một cách để kiểm tra sự an toàn của các công cụ tái cấu trúc tự động.Có công cụ tái cấu trúc an toàn nào cho .net (hoặc ít nhất là C#) không?
Câu hỏi của tôi là: Có công cụ tái cấu trúc an toàn nào cho nền tảng .net không?; điều đó có nghĩa là các công cụ chỉ cho phép tái cấu trúc thực và ví dụ: không cho phép tái cấu trúc inline variable
trên biến số temp
trong ví dụ sau hoặc ít nhất là cảnh báo rằng tôi đang thay đổi logic.
class Program
{
private static int _x;
static void Main()
{
int temp = Test();
for (int i = 0; i < 10; ++i)
{
Console.WriteLine(temp);
}
Console.ReadKey();
}
private static int Test()
{
return ++_x;
}
}
Tôi đã thử nghiệm ví dụ này trên các công cụ refactoring Resharper
và Coderush + Refactor pro
với các phiên bản mới nhất và cả thất bại kiểm tra và cho phép sắp xếp để:
class Program
{
private static int _x;
static void Main()
{
for (int i = 0; i < 10; ++i)
{
Console.WriteLine(Test());
}
Console.ReadKey();
}
private static int Test()
{
return ++_x;
}
}
Bạn có ví dụ về công cụ * sẽ * thực hiện theo cách bạn muốn, ngay cả đối với ngôn ngữ khác không? –
Thực ra tôi muốn rằng công cụ sẽ không cung cấp việc tái cấu trúc cụ thể này hoặc hiển thị một số loại cảnh báo rằng điều này sẽ thay đổi logic của mã. Bởi vì việc tái cấu trúc không được thay đổi logic, hãy xem định nghĩa tại wikipedia: http://en.wikipedia.org/wiki/Refactoring. – RoXX