Сегодня я прошел через следующий код, и мне это не понравилось. Это довольно очевидно, что он делает, но я все равно добавлю небольшое объяснение:
В основном он считывает все настройки для приложения из БД и итерации через все они ищут версию БД, а версия APP затем устанавливает некоторые переменные в значения в БД (которые будут использоваться позже).
Я посмотрел на него и подумал, что это немного уродливо - мне не нравятся инструкции switch, и я ненавижу вещи, которые продолжают перебирать список, как только они закончатся. Поэтому я решил реорганизовать его.
Мой вопрос для всех вас заключается в том, как бы вы его реорганизовали? Или вы считаете, что он вообще нуждается в рефакторинге?
Здесь код:
using (var sqlConnection = new SqlConnection(Lfepa.Itrs.Framework.Configuration.ConnectionString))
{
sqlConnection.Open();
var dataTable = new DataTable("Settings");
var selectCommand = new SqlCommand(Lfepa.Itrs.Data.Database.Commands.dbo.SettingsSelAll, sqlConnection);
var reader = selectCommand.ExecuteReader();
while (reader.Read())
{
switch (reader[SettingKeyColumnName].ToString().ToUpper())
{
case DatabaseVersionKey:
DatabaseVersion = new Version(reader[SettingValueColumneName].ToString());
break;
case ApplicationVersionKey:
ApplicationVersion = new Version(reader[SettingValueColumneName].ToString());
break;
default:
break;
}
}
if (DatabaseVersion == null)
throw new ApplicationException("Colud not load Database Version Setting from the database.");
if (ApplicationVersion == null)
throw new ApplicationException("Colud not load Application Version Setting from the database.");
}