![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
По моему тут больше подойдет препроцессор #ifdef _DEBUG. Зачем нагружать программу фабрикой логеров для тестирования? |
|||
|
||||
| chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 6 Всего: 44 |
как вариант логгер который пишет plain text, логгер который пишит в xml формате или логгер который шлет все на мыло или еще куда Добавлено через 4 минуты и 40 секунд
офтоп небольшой PocoCapsule например, больше не встречал готовых реализаций DI\IoC |
|||
|
||||
| azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Такое я бы реализовал передав ему аргумент writer какой нибудь, создать единый интерфейс для logwriter -а, наследовать от него xmlWriter, mailWriter и plainWriter например...а дальше так
ну или что-то наподобие этого. В коде можно будет различать случаи, когда нужно послать на мейл или вывести в log file. |
||||
|
|||||
| Любитель |
|
||||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 24 Всего: 92 |
Почему я не имею права запускать юнит-тесты на релизе?! Ещё и пересобирать.. Не, не хочу Вопрос, как таковой, не имеет отношения к С++ (точнее так - отношениее имеет, не имеет прямой привязки), так что...
1. В твоём примере полиморфизм не сработает - ты передаёшь объект по ссылке. 2. У тебя просто writer выполняет то, что я называл логгером. Да-да, мы такие |
||||
|
|||||
| azesmcar |
|
||||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Я думал речь идет о простом тестировании, но название препроцессора всегда можно изменить #ifdef UNIT_TEST или как там? Компилятор что-то там определяет точно.
Одна поправка, константную ссылку, но что это меняет? с чего ему не работать? Полиморфизм работает как по указателю так и по ссылке. Правда я на скорую руку написал, просто идею показать..тут больше бы подошел статический полиморфизм на мой взгляд.
так например.
Ну это я для примера написал, разумеется это не идеальный код, я саму идею имел ввиду. А кстати фабрика логеров это тоже лишний уровень абстракции. Это сообщение отредактировал(а) azesmcar - 6.8.2009, 09:41 |
||||||||
|
|||||||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
azesmcar, статический полиморфизм - он статический, а надо, чтобы в ран-тайме можно было дать объекту логгер, обычный, продвинутый, или Null-логгер.
фабрика - это не уровень абстракции, а вспомогательный объект\класс, не влияющий на абстракцию того что она производит объекты же не знают как и произвели - просто создали, создали на фабрике или клонировали Добавлено @ 10:59 azesmcar, а юнит тест это
Это сообщение отредактировал(а) GoldFinch - 6.8.2009, 11:00 |
|||
|
||||
| azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Кто это так решил что надо? Я писал как раз о том, чтобы сделать это во время компиляции а не в рантайме, потому как не увидел смысла оставлять это на рантайм.
Да, но уровень абстракции нужен для работы фабрики. Я знаю что такое юнит-тест. Что ты этим хотел сказать? Студия насколько я помню при генерации шаблона юнит тестов определяет какие-то конкретные макросы, можно использовать их или же определить свой собственный в настройках проекта в конце концов. Это сообщение отредактировал(а) azesmcar - 6.8.2009, 11:07 |
||||
|
|||||
| mes |
|
||||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
По контексту обсуждаемого поста это не следовало.
Конечно нет, но логично предположить, что обсуждение синглетона в данной теме, исходя из поста тс, ведется именно в рамках его канонического описания
Правильно, взять лучшее и постараться исключить плохое. Плохое, имхо, это контроль класса над временем жизни , способом и кол-вом создаваемых инстанций. Правда после внесения изменений синглетон перестает быть синглетоном Это сообщение отредактировал(а) mes - 6.8.2009, 12:42 |
||||||
|
|||||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
||||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
||||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
fixed.
Добавлено через 33 секунды было бы typedef ... logger_t; ... logger_t::Instance()->write(...); был бы полиморфизм. хотя совсем не понятно, почему не просто logger_t::write(...); (то что используется вызов метода по указателю, ->write(...); могло бы использоваться для виртуального метода, но это же не тот случай) Добавлено через 2 минуты и 59 секунд какбэ запись Logger<XMLWriter> совершенно эквивалентна Logger_XMLWriter а вот template<typename W> Logger<W> это совсем другое |
|||
|
||||
| azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
что такое logger_t??? Куда он пишет и как дать понять куда я хочу писать? В XML Или в Plain text?
Каким образом вызов метода по указателю связан с виртуальным методом?
Но я как раз хочу сказать что динамический полиморфизм тут совершенно не нужен (ну или я не понял зачем он нужен, может у автора есть причина). |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
это как раз и проявление статического полиморфизма. Неважно какой тип, главное чтоб он обладал нужным интерфейсом Добавлено @ 13:04 Ну а вообще мне кажется, что в Вашем споре между GoldFinch и azesmcar, каждый спорит о своем.. Неплохо бы прояснить в чем суть то спора Это сообщение отредактировал(а) mes - 6.8.2009, 13:11 |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
ну вообще тема про синглтоны
|
|||
|
||||
| azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
я не понял чем мой вариант отличался от "совсем другого"?
Я и сам не знаю |
||||
|
|||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |