Постоянно смотрю на изменяющийся код. Весь поток контролировать не могу, поэтому выбираю некоторые места по принципу
Медведь на рыбалке в период нереста. Далее, привожу что увидел и как бы изменил. Рекомендую смотреть всем (даже если свой код не увидели), чтобы и самому учиться и не допустить в будущем:
Кодforeach (KeyValuePair<int, List<string>> pair in _sections)
Тут лучше использовать ключевое слово var
Кодforeach (var pair in _sections)
КодString.Join(Environment.NewLine, pair.Value.ToArray())
С помощью Ecng.Common пишется короче
Кодpair.Value.Join(Environment.NewLine)
Кодprotected List<string> _sectionNames;
Тут или область видимости должна быть private или название должно быть SectionName.
КодString.Format("{0}={1}", key, value)
С помощью Ecng.Common пишется короче
Код"{0}={1}".Put(key, value)
Код_sections[_sectionNames.IndexOf(sectionName)];
Лучше проверить через Contains.
Кодtry
{
....
}
catch (KeyNotFoundException ex)
{
throw new KeyNotFoundException(String.Format("Неопознанный раздел конфиг-файла: {0}", sectionName), ex);
}
Старайтесь минимизироваться перехват исключений. В том случае это решается через простую проверку на существование в коллекции.
Кодthrow new InvalidOperationException(String.Format("Ключ {0} не найден", key));
Я бы заменил на ArgumentException. Он как то более осмысленный.
- Не пишите Decimal, Int64, String или Single. Понятно, что это межъязыковое название. Но лучше использовать то, что родное для C#.
Кодpublic const int DEFAULT_PLAZA2_PORT = 4001;
Стиль именования как в Win32 API. Последний умер де факто много лет назад, наследие его живет и по сей день.[biggrin]
- Добавляйте xml комментарии к самим классам, а не только его членам (видел в некоторых местах через // что есть совсем не то). И не забывайте про русский язык. В конце предложения ставится точка.
- Пользуйтесь R#. Он показывает допущенные ошибки и предупреждает заранее о неправильном коде.