Исключения в конструкторе
От: Аноним  
Дата: 24.09.10 11:32
Оценка:
В конструкторе класса вызываю метод инициализации параметров, переданных из другой формы.
Насколько это хорошо и как обрабатывать try-catch?
Re: Исключения в конструкторе
От: Lloyd Россия  
Дата: 24.09.10 11:36
Оценка: +1 :))) :))) :)))
Здравствуйте, Аноним, Вы писали:

А>В конструкторе класса вызываю метод инициализации параметров, переданных из другой формы.

А>Насколько это хорошо

Это просто отлично!

А>и как обрабатывать try-catch?


Вот так:
try {
    ...
} catch {
    // Обработка
}

Re[2]: Исключения в конструкторе
От: Дмитрий Наумов  
Дата: 24.09.10 11:51
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, Аноним, Вы писали:


А>>В конструкторе класса вызываю метод инициализации параметров, переданных из другой формы.

А>>Насколько это хорошо

L>Это просто отлично!


А>>и как обрабатывать try-catch?


L>Вот так:

L>
L>try {
L>    ...
L>} catch {
L>    // Обработка
L>}
L>

L>

Книгу вредных советов опубликовать готовимся?
Re[3]: Исключения в конструкторе
От: Lloyd Россия  
Дата: 24.09.10 13:07
Оценка:
Здравствуйте, Дмитрий Наумов, Вы писали:

А>>>и как обрабатывать try-catch?


L>>Вот так:

L>>
L>>try {
L>>    ...
L>>} catch {
L>>    // Обработка
L>>}
L>>

L>>

ДН>Книгу вредных советов опубликовать готовимся?


Ну ты же не знаешь, что у меня заместо // Обработка
Re[4]: Исключения в конструкторе
От: Дмитрий Наумов  
Дата: 24.09.10 13:13
Оценка: :)
Здравствуйте, Lloyd, Вы писали:

L>Ну ты же не знаешь, что у меня заместо // Обработка


Ну давай я попытаюсь угадать, а ты будешь говорить тепло-холодно

Запись в лог? Я бы сделал в вызывающем коде, в точке создания объекта.
Обертка в "свое" исключение? Врядли ты оборачиваешь NullReferenceException или OutOfMemoryException. Тогда это один из code smells — "Constructor does real work"
Re[5]: Исключения в конструкторе
От: Lloyd Россия  
Дата: 24.09.10 13:18
Оценка:
Здравствуйте, Дмитрий Наумов, Вы писали:

ДН>Ну давай я попытаюсь угадать, а ты будешь говорить тепло-холодно


ДН>Запись в лог? Я бы сделал в вызывающем коде, в точке создания объекта.


Не угадал. Там обработка ошибок.

ДН>Обертка в "свое" исключение? Врядли ты оборачиваешь NullReferenceException или OutOfMemoryException. Тогда это один из code smells — "Constructor does real work"


А если real work в методах — это другой из code smells "Method does real work"? И ваще самый большой smell — это "Someone does real work"! Никогда не опускайтесь до такого, увидят — засмеют.
Re[6]: Исключения в конструкторе
От: Дмитрий Наумов  
Дата: 24.09.10 13:32
Оценка: -3 :)
Здравствуйте, Lloyd, Вы писали:

L>А если real work в методах — это другой из code smells "Method does real work"? И ваще самый большой smell — это "Someone does real work"! Никогда не опускайтесь до такого, увидят — засмеют.


А я смотрю вы из тех, кто делает все делает в конструкторе

    class DoSomething
    {
        public DoSomething(int orderId)
        {
            var order = Database.Instance.GetOrder(orderId);
            var invoice = CostCalculator.GetInvoice(order);

            MailGateway.SendInvoice(invoice);
        }
    }


А ваши язвительные комментарии я оставлю без внимания, много лет назад я тоже думал что все знаю и все умею и то факт, что мой "код работает" это главный и единственный критерий оценки моей работы.
Re[7]: Исключения в конструкторе
От: Lloyd Россия  
Дата: 24.09.10 13:36
Оценка:
Здравствуйте, Дмитрий Наумов, Вы писали:

L>>А если real work в методах — это другой из code smells "Method does real work"? И ваще самый большой smell — это "Someone does real work"! Никогда не опускайтесь до такого, увидят — засмеют.


ДН>А я смотрю вы из тех, кто делает все делает в конструкторе


Оставте ваши фантазии при себе. Ок?

ДН>А ваши язвительные комментарии я оставлю без внимания, много лет назад я тоже думал что все знаю и все умею и то факт, что мой "код работает" это главный и единственный критерий оценки моей работы.


См. выше.
Re[8]: Исключения в конструкторе
От: Дмитрий Наумов  
Дата: 24.09.10 13:56
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Оставте ваши фантазии при себе. Ок?


Хорошо. А вы, пожалуйста, воздержитесь от "вредных" советов. Ну или хотя бы раскрывайте их содержание, если считаете их правильными.
Re[9]: Исключения в конструкторе
От: Lloyd Россия  
Дата: 24.09.10 14:33
Оценка: +1
Здравствуйте, Дмитрий Наумов, Вы писали:

L>>Оставте ваши фантазии при себе. Ок?


ДН>Хорошо. А вы, пожалуйста, воздержитесь от "вредных" советов. Ну или хотя бы раскрывайте их содержание, если считаете их правильными.


Вредных советов не было, ты их нафантазровал.
Re[2]: Исключения в конструкторе
От: Аноним  
Дата: 24.09.10 14:48
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, Аноним, Вы писали:


А>>В конструкторе класса вызываю метод инициализации параметров, переданных из другой формы.

А>>Насколько это хорошо

L>Это просто отлично!


А>>и как обрабатывать try-catch?


L>Вот так:

L>
L>try {
L>    ...
L>} catch {
L>    // Обработка
L>}
L>

L>

ты шутом подрабатываешь тут?
просто замечаю твои посты последние
Re[3]: Исключения в конструкторе
От: Lloyd Россия  
Дата: 24.09.10 14:52
Оценка: :)
Здравствуйте, Аноним, Вы писали:

А>ты шутом подрабатываешь тут?


да нет, какой подрабатываю, все забесплатно, от души

А>просто замечаю твои посты последние


компенсирую отсутствие внимания со стороны окружающих, не иначе.
Re[10]: Исключения в конструкторе
От: Дмитрий Наумов  
Дата: 28.09.10 12:35
Оценка:

Write trivial constructors
Constructors should never perform any work. Since tests always have to invoke the constructor, an expensive constructor hampers unit testing. Moving expensive code to an init method doesn’t help, because most tests need to work with an initialized object. At the same time, an object should be ready to use as soon as it is constructed. It is awkward when an object requires certain setters to be invoked before it is viable. Clients may resort to guess-and-check programming to find all the methods that need to be invoked in order to make the object usable. The solution is to ask for fully-initialized dependencies in the constructor. For example, instead of connecting to a database in a constructor or an init method, add a constructor parameter for either an open Connection object or preferably for the actual queried data.


Так вот, если следовать правильным советам, то не будет поводов ловить и обрабатывать исключения в конструкторе.
Re[11]: Исключения в конструкторе
От: Lloyd Россия  
Дата: 28.09.10 12:43
Оценка:
Здравствуйте, Дмитрий Наумов, Вы писали:

ДН>Так вот, если следовать правильным советам, то не будет поводов ловить и обрабатывать исключения в конструкторе.


А с чего вы решили, что в первом посте речь идет про "исключения в конструкторе"? Я ничего подтверждающего это там не нашел.
Re[12]: Исключения в конструкторе
От: Дмитрий Наумов  
Дата: 28.09.10 12:48
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>А с чего вы решили, что в первом посте речь идет про "исключения в конструкторе"? Я ничего подтверждающего это там не нашел.


Конечно я не отвергаю возможность влияния вспышки на солнце, но почему то из контекста вопроса я сделал именно такой вывод:

В конструкторе класса вызываю метод инициализации параметров, переданных из другой формы.
Насколько это хорошо и как обрабатывать try-catch?

Re[13]: Исключения в конструкторе
От: Lloyd Россия  
Дата: 28.09.10 12:51
Оценка:
Здравствуйте, Дмитрий Наумов, Вы писали:

ДН>Конечно я не отвергаю возможность влияния вспышки на солнце, но почему то из контекста вопроса я сделал именно такой вывод:


ДН>

ДН>В конструкторе класса вызываю метод инициализации параметров, переданных из другой формы.
ДН>Насколько это хорошо и как обрабатывать try-catch?


Не стоило цитировать, я читал этот пост. Теперь прочтите и вы и поймите, что ваше предположение, что я предлагаю сувать обработку ошибок в конструктор — исключительно ваша фантазия.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.