Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, Аноним, Вы писали:
А>>В конструкторе класса вызываю метод инициализации параметров, переданных из другой формы. А>>Насколько это хорошо
L>Это просто отлично!
А>>и как обрабатывать try-catch?
L>Вот так: L>
Здравствуйте, Lloyd, Вы писали:
L>Ну ты же не знаешь, что у меня заместо // Обработка
Ну давай я попытаюсь угадать, а ты будешь говорить тепло-холодно
Запись в лог? Я бы сделал в вызывающем коде, в точке создания объекта.
Обертка в "свое" исключение? Врядли ты оборачиваешь NullReferenceException или OutOfMemoryException. Тогда это один из code smells — "Constructor does real work"
Здравствуйте, Дмитрий Наумов, Вы писали:
ДН>Ну давай я попытаюсь угадать, а ты будешь говорить тепло-холодно
ДН>Запись в лог? Я бы сделал в вызывающем коде, в точке создания объекта.
Не угадал. Там обработка ошибок.
ДН>Обертка в "свое" исключение? Врядли ты оборачиваешь NullReferenceException или OutOfMemoryException. Тогда это один из code smells — "Constructor does real work"
А если real work в методах — это другой из code smells "Method does real work"? И ваще самый большой smell — это "Someone does real work"! Никогда не опускайтесь до такого, увидят — засмеют.
Здравствуйте, 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);
}
}
А ваши язвительные комментарии я оставлю без внимания, много лет назад я тоже думал что все знаю и все умею и то факт, что мой "код работает" это главный и единственный критерий оценки моей работы.
Здравствуйте, Дмитрий Наумов, Вы писали:
L>>А если real work в методах — это другой из code smells "Method does real work"? И ваще самый большой smell — это "Someone does real work"! Никогда не опускайтесь до такого, увидят — засмеют.
ДН>А я смотрю вы из тех, кто делает все делает в конструкторе
Оставте ваши фантазии при себе. Ок?
ДН>А ваши язвительные комментарии я оставлю без внимания, много лет назад я тоже думал что все знаю и все умею и то факт, что мой "код работает" это главный и единственный критерий оценки моей работы.
Здравствуйте, Дмитрий Наумов, Вы писали:
L>>Оставте ваши фантазии при себе. Ок?
ДН>Хорошо. А вы, пожалуйста, воздержитесь от "вредных" советов. Ну или хотя бы раскрывайте их содержание, если считаете их правильными.
Вредных советов не было, ты их нафантазровал.
Re[2]: Исключения в конструкторе
От:
Аноним
Дата:
24.09.10 14:48
Оценка:
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, Аноним, Вы писали:
А>>В конструкторе класса вызываю метод инициализации параметров, переданных из другой формы. А>>Насколько это хорошо
L>Это просто отлично!
А>>и как обрабатывать try-catch?
L>Вот так: L>
L>try {
L> ...
L>} catch {
L> // Обработка
L>}
L>
L>
ты шутом подрабатываешь тут?
просто замечаю твои посты последние
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.
Так вот, если следовать правильным советам, то не будет поводов ловить и обрабатывать исключения в конструкторе.
Здравствуйте, Дмитрий Наумов, Вы писали:
ДН>Так вот, если следовать правильным советам, то не будет поводов ловить и обрабатывать исключения в конструкторе.
А с чего вы решили, что в первом посте речь идет про "исключения в конструкторе"? Я ничего подтверждающего это там не нашел.
Здравствуйте, Lloyd, Вы писали:
L>А с чего вы решили, что в первом посте речь идет про "исключения в конструкторе"? Я ничего подтверждающего это там не нашел.
Конечно я не отвергаю возможность влияния вспышки на солнце, но почему то из контекста вопроса я сделал именно такой вывод:
В конструкторе класса вызываю метод инициализации параметров, переданных из другой формы.
Насколько это хорошо и как обрабатывать try-catch?
Здравствуйте, Дмитрий Наумов, Вы писали:
ДН>Конечно я не отвергаю возможность влияния вспышки на солнце, но почему то из контекста вопроса я сделал именно такой вывод:
ДН>
ДН>В конструкторе класса вызываю метод инициализации параметров, переданных из другой формы.
ДН>Насколько это хорошо и как обрабатывать try-catch?
Не стоило цитировать, я читал этот пост. Теперь прочтите и вы и поймите, что ваше предположение, что я предлагаю сувать обработку ошибок в конструктор — исключительно ваша фантазия.