Я хотел бы узнать ваше мнение о стиле кодирования, о котором я нахожусь на заборе. Я понимаю, что, вероятно, нет окончательного ответа, но я хотел бы видеть, есть ли сильное предпочтение в том или ином направлении.Вопрос о стиле/удобочитаемости в отношении оператора C# «using»
Я иду через решение, добавляя using
заявления в довольно многих местах. Часто натыкаюсь что-то вроде этого:
{
log = new log();
log.SomeProperty = something; // several of these
log.Connection = new OracleConnection("...");
log.InsertData(); // this is where log.Connection will be used
... // do other stuff with log, but connection won't be used again
}
где log.Connection является OracleConnection, который реализует IDisposable.
neatnik во мне хочет изменить его на:
{
using (OracleConnection connection = new OracleConnection("..."))
{
log = new log();
log.SomeProperty = something;
log.Connection = conn;
log.InsertData();
...
}
}
Но любитель краткости и получить без отрыва от работы сделано, слегка быстрее хочет сделать:
{
log = new log();
log.SomeProperty = something;
using (log.Connection = new OracleConnection("..."))
log.InsertData();
...
}
Для по какой-то причине я чувствую себя немного грязно, делая это. Считаете ли вы это плохо или нет? Если вы считаете, что это плохо, почему? Если это хорошо, почему?
EDIT: Обратите внимание, что это всего лишь один (несколько надуманный) пример многих. Пожалуйста, не зацикливайтесь на том, что это происходит, чтобы указать класс журнала с плохо продуманным интерфейсом. Это не относится к моему вопросу, и я не вправе вообще улучшать классы.
Благодарим вас за обращение к актуальному вопросу. Ваш вопрос о выполнении инициализации вне блока использования интересен, потому что единственная причина, по которой я переместил его внутри блока, состоял в том, что я чувствовал, что было более аккуратным, чтобы связать все связанные коды. Я не думал о потенциальном расходе (не проблема здесь, а действительный момент, чтобы иметь в виду). –