Постоянно смотрю на изменяющийся код. Весь поток контролировать не могу, поэтому выбираю некоторые места по принципу Медведь на рыбалке в период нереста. Далее, привожу что увидел и как бы изменил. Рекомендую смотреть всем (даже если свой код не увидели), чтобы и самому учиться и не допустить в будущем:
...Тут лучше использовать ключевое слово var
foreach (var pair in _sections)
...С помощью Ecng.Common пишется короче
pair.Value.Join(Environment.NewLine)
...Тут или область видимости должна быть private или название должно быть SectionName....С помощью Ecng.Common пишется короче
"{0}={1}".Put(key, value)
...Лучше проверить через Contains....Старайтесь минимизироваться перехват исключений. В том случае это решается через простую проверку на существование в коллекции....Я бы заменил на ArgumentException. Он как то более осмысленный.- Не пишите Decimal, Int64, String или Single. Понятно, что это межъязыковое название. Но лучше использовать то, что родное для C#.
...Стиль именования как в Win32 API. Последний умер де факто много лет назад, наследие его живет и по сей день.😀- Добавляйте xml комментарии к самим классам, а не только его членам (видел в некоторых местах через // что есть совсем не то). И не забывайте про русский язык. В конце предложения ставится точка.
- Пользуйтесь R#. Он показывает допущенные ошибки и предупреждает заранее о неправильном коде.
Kommentare (15)
Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen
Большинство комментариев относится ко мне. Все поправил за исключением верхнего куска. Вот мое мнение: давно на каком-то MS'ском блоге читал рекомендацию: если в большинстве случаев ключи будут находиться, лучше сразу возвращать значение через метод this[TKey key] и перехватывать неопознанные ключи через исключение. Если вероятность исключения велика, лучше это делать через метод Contains. Это кусок кода написан в protected методе, к которому обращается только мой плазовский код. Входящие значения ключей заранее известны и контролируются, т.е. вероятность ненахождения ключей мала.
Михаил, за вами, как за менеджером проекта, последнее слово.
Потому что другие пока код с логикой не писали. Вот сейчас начнут, и будут комментарии к другим.
Тут не столько дело в перехвате и в Contains, сколько в сложности конструкции ``` _sections[_sectionNames.IndexOf(sectionName)];
Все ок. Я не увидел наследования. Но все равно, на будущее. Стиль именования протектем полей такой же как и паблик. Потому как смысл у них почти одинаковый.
Это хорошо. Только зря вы убрали метод FindSection. Вообще лучше по максимуму переменные делать private и доступ к ним или через методы или через свойства. Лучше через методы, чтобы базовый класс делал базовую работу, а не просто отдавал свое состояние дочерним.
Еще список того, что может пригодиться:
...можно писать короче:...можно писать короче:можно писать короче:
Проверка на null - это правильно. Но на следующей строчке MyEvent может стать null (в другом потоке произошла отписка от события) и будет NullReferenceException. Решается через доп переменную:
Если не создавать собственных делегатов (видимо равнение идет на Плазу, где они создаются автоматически, а не потому что так правильно), то запись будет короче:
int и Int32 - это алиасы. так же для bool и Boolean и т.д. Выражение вида:
эквивалентно:
Подниму топик парочкой советов:
...Плох тем, что не важно, есть необходимый уровень трассировки или нет, строчка будет собираться всегда. Если такая конструкция встречается в коде, который вызывается часто, может снизить производительность....Плох тем, что не важно, есть необходимый уровень трассировки или нет, строчка будет собираться всегда. Если такая конструкция встречается в коде, который вызывается часто, может снизить производительность.Сделал криво, знаю. Уже думал над тем, чтобы переделать + поменять internal на public. В релиз не будет попадать вообще: выделю в отдельный метод с аттрибутом [Conditional("DEBUG")]
Добрый день. Если верить http://www.codeproject.com/KB/cs/WeakEvents.aspx, кот. ссылается на Ecma cпецификацию, то для обеспечения потокобезопасности делегатов необходимо еще и локирование:
@esper, может выставишь у себя tab'ы (Tools \ Options \ Text Editor \ Tab \ Keep tabs)?