string[] version = ConfigurationManager.
int mayor = Convert.ToInt32(version[0]);
int menor = Convert.ToInt32(version[1]);
int? resultado = 0;
DSVersionTableAdapters.Version
new DSVersionTableAdapters.Version
adapterVersion.GetData(mayor, menor, ref resultado);
if (resultado == 0)
{
log4net.ILog log = log4net.LogManager.GetLogger("
log.Fatal("No está con buena versión: APP(" + version + ") con la base de datos");
}
Esta es la segunda versión de exactamente el mismo código con un poco de programación defensiva.
string[] version = null;
int mayor = 0;
int menor = 0;
int? resultado = 0;
try
{
version = ConfigurationManager.AppSettings["version"].Split('.');
mayor = Convert.ToInt32(version[0]);
menor = Convert.ToInt32(version[1]);
}
catch (Exception err)
{
log.Fatal("No se encuentra la variable de versión", err);
throw new ApplicationException("No se encuentra la variable de versión, arreglar el Web.config. Debería tener la línea add key=version value=1.0.X", err);
}
try
{
VersionTableAdapters.TBLVERSIONTableAdapter adapterVersion =
new VersionTableAdapters.TBLVERSIONTableAdapter();
adapterVersion.GetData(mayor, menor, ref resultado);
}
catch (Exception err)
{
log.Fatal("No existe la tabla de las versiones");
throw new ApplicationException("La tabla de versiones NO se encuentra o NO tiene una línea de versionamiento", err);
}
if (resultado == 0)
{
log.Fatal("No está con buena versión: APP(" + version + ") con la base de datos");
throw new ApplicationException("La versión de la base de datos NO corresponde con la de la aplicación. Revise la tabla TBLVERSION y el fichero web.config");
}
Es algo que muchísima gente lo hace y lo hace muy bien, pero últimamente he visto algunos ejemplos desprolijos (incluyendo míos y valía la pena la reflexión).
Por otro lado, no importa el código en sí pero si algo hay que saber es que el código con progrmaación defensiva y log/trace es algo así como 6 a 7 veces más grande que el código que contempla solamente el mejor caso.
Así que si haces algo desprolijo, es probable que en realidad sea 6 veces más largo para que sea como la gente
Comentarios