Actualmente estamos ocupados migrando de Visual Studio 2005 a Visual Studio 2010 (usando C/C++ no administrado). Esto significa que aproximadamente la mitad de nuestros desarrolladores ya están usando Visual Studio 2010, mientras que la otra mitad todavía está usando Visual Studio 2005. Recientemente, llegué a una situación en la que se puede escribir cierta construcción de manera limpia en Visual Studio 2010, pero requiere código fuente menos limpia en Visual Studio 2005. Debido a que no todos los desarrolladores ya han Visual Studio 2010 en su máquina, tengo que escribir el código como el siguiente:¿Es posible tener el código fuente que 'agote el tiempo' (se vuelve inválido después de cierto momento)?
#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
Dado que todos los desarrolladores va a migrar a Visual Studio 2010; Para finales de este año, quiero que este código 'desaparezca' automáticamente después de cierto momento. Mantener la 'versión menos limpia' en el código fuente da como resultado un código fuente ilegible a largo plazo.
Por supuesto, sé que el código no desaparece automáticamente, por lo que en realidad quiero una alarma automática después de cierto momento. Algo como esto:
#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
De esa manera, si nos olvidamos de esto, se nos notifica automáticamente de esta después del 1 de noviembre de 2010.
Este truco probablemente requiere el uso de FECHA, pero ya que este necesidades para ser manejado por el precompilador, no puede realizar manipulaciones de cadena o usar las funciones de fecha/hora C.
También consideré la idea alternativa de enviarme un correo retrasado, pero me preguntaba si no había una solución que pudiera incluirse en el código fuente.
Parece que la limpieza se puede programar con bastante facilidad, por lo que no me molestaría en insertar advertencias adicionales para recordar a los desarrolladores que eliminen el código redundante. –