Постоянно смотрю на изменяющийся код. Весь поток контролировать не могу, поэтому выбираю некоторые места по принципу Медведь на рыбалке в период нереста. Далее, привожу что увидел и как бы изменил. Рекомендую смотреть всем (даже если свой код не увидели), чтобы и самому учиться и не допустить в будущем:
...Тут лучше использовать ключевое слово 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#. Он показывает допущенные ошибки и предупреждает заранее о неправильном коде.
评论 (15)
登录 或 创建账户, 登录或注册以发表评论
Большинство комментариев относится ко мне. Все поправил за исключением верхнего куска. Вот мое мнение: давно на каком-то 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)?