Hiện tại chúng tôi đang di chuyển từ Visual Studio 2005 sang Visual Studio 2010 (sử dụng C/C++ không được quản lý). Điều này có nghĩa là khoảng một nửa số nhà phát triển của chúng tôi đã sử dụng Visual Studio 2010, trong khi nửa còn lại vẫn đang sử dụng Visual Studio 2005. Gần đây, tôi đã gặp phải một tình huống có thể được viết một cách rõ ràng trong Visual Studio 2010, nhưng đòi hỏi mã nguồn kém sạch trong Visual Studio 2005. bởi vì không phải tất cả các nhà phát triển có đã Visual Studio 2010 trên máy tính của họ, tôi phải viết mã như thế này:Có thể có mã nguồn 'time out' (trở thành không hợp lệ sau một thời điểm nhất định) không?
#if _MSC_VER >= 1600
// clean version of the source code
#else
// less clean version
// of the source code
// requiring multiple lines of code
// and requiring some dirty static_casts
#endif
Vì tất cả các nhà phát triển sẽ chuyển sang Visual Studio 2010 cuối năm nay, tôi muốn mã này tự động biến mất sau một thời điểm nhất định. Việc giữ 'phiên bản ít sạch hơn' trong mã nguồn sẽ dẫn đến mã nguồn không đọc được trong thời gian dài.
Tất nhiên, tôi biết mã đó không tự động biến mất, vì vậy tôi thực sự muốn có chuông báo thức tự động sau một thời điểm nhất định. Một cái gì đó như thế này:
#if _MSC_VER >= 1600
// clean version of the source code
#else
// less clean version
// of the source code
// requiring multiple lines of code
// and requiring some dirty static_casts
#endif
#if compilation_date is after 1 november 2010
# error "Remove Visual Studio 2005 compatibility code from this file"
#endif
Bằng cách đó, nếu chúng ta quên về vấn đề này, chúng tôi sẽ tự động được thông báo về điều này sau khi ngày 1 tháng 11 năm 2010.
Thủ thuật này có thể đòi hỏi việc sử dụng các NGÀY, nhưng vì nhu cầu này để được xử lý bởi trình biên dịch trước, bạn không thể thực hiện thao tác chuỗi hoặc sử dụng các hàm ngày/giờ C.
Tôi cũng coi ý tưởng thay thế là chỉ gửi cho mình một thư bị trì hoãn, nhưng tôi đã tự hỏi nếu không có giải pháp nào có thể được tích hợp trong mã nguồn.
Có vẻ như việc dọn dẹp có thể được viết khá dễ dàng, vì vậy tôi sẽ không bận tâm với việc chèn các cảnh báo bổ sung để nhắc nhở các nhà phát triển loại bỏ mã dự phòng. –