Russian Qt Forum
Апрель 29, 2024, 22:03 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2] 3 4   Вниз
  Печать  
Автор Тема: Помогите с умными указателями  (Прочитано 26192 раз)
_Bers
Бывалый
*****
Offline Offline

Сообщений: 486


Просмотр профиля
« Ответ #15 : Август 06, 2015, 01:55 »

Вы в курсе, что такое ТДД? Работали с множеством синглтонов? Скорее всего нет. Поробатаете на большом проекте с десятком синглтонами, тогда 100% мнение измените.
да, в курсе. и да, я работаю по методике ТДД.
проблем от сингелтонов не наблюдал вообще никаких.

(на самом деле наблюдал, но то был мелкий "деццкий" проект,
и сингелтоны там были "деццкими" с ручным приводом.
приходилось вручную следить за ними: за порядком инициализации и деинициализации.
при деинициализации проект то и дело крякал.
я предложил человеку уйти с "ручного привода" на "автомат".
человек ответил: я хочу сам все контролировать.
контролируй - ответил я ему.
через два месяца человек снова ко мне обратился,
и попросил научить как делать "автомат".
в общем он задолбался вручную их пасти)

и я не уверен, насчет вас в этом моменте.
по одной простой причине:
основной юзкейс сингелтонов - глобальные точки доступа.
и нужны они в основном только для каких то подсистем.

это например: сетевая подсистема, звуковая подсистема, графическая, логгер, и тп.
зачастую они вообще никак между собой не связаны.
количество их весьма ограниченно.

другими словами, даже если проект крупный,
непрозрачных сингелтонов в нем будет так же мало,
как и более мелком проекте на таком же фреймворке.

прозрачные сингелтоны - количество может исчисляться десятками и сотнями.
но они не есть головная боль, просто потому,
что программисты могут даже и не подозревать об их существовании.

« Последнее редактирование: Август 06, 2015, 02:02 от _Bers » Записан
_Bers
Бывалый
*****
Offline Offline

Сообщений: 486


Просмотр профиля
« Ответ #16 : Август 06, 2015, 02:00 »

Пожалуйста. Самый примитивный пример.
Код:
class UpdateDownloadManager
{
  static UpdateDownloadManager* pInstance;
public:
  static instance();
  void apply(const std::string& url);
private:
  UpdateDownloadManager();
  Items compareWithLocal();
  void saveNewState(const Items& items);
}

вот это мне больше нравится.

итак, начнем.

покажите дизайн использования.
напишите тесты, конкретно для вот этого вот класса.
смысл тестов - они должны проиллюстрировать как использовать данный класс в работе.

мне вот например, не понятно,
что вообще должен делать данный класс,
для чего он нужен,
и как с ним работать.

проиллюстрируйте использование.
« Последнее редактирование: Август 06, 2015, 02:03 от _Bers » Записан
Tuxford
Гость
« Ответ #17 : Август 07, 2015, 10:46 »

проблем от сингелтонов не наблюдал вообще никаких.
Значит мало еще работаете. На моей практики 80% за последние 10 лет, синглотоны были вообще запрещены.

(на самом деле наблюдал, но то был мелкий "деццкий" проект,
и сингелтоны там были "деццкими" с ручным приводом.
приходилось вручную следить за ними: за порядком инициализации и деинициализации.
при деинициализации проект то и дело крякал.
я предложил человеку уйти с "ручного привода" на "автомат".
человек ответил: я хочу сам все контролировать.
контролируй - ответил я ему.
через два месяца человек снова ко мне обратился,
и попросил научить как делать "автомат".
в общем он задолбался вручную их пасти)
Вот и пример. На "автомате" еще веселее бывает. И тогда вот поиск багов веселье. Если не проходили это, то еще ждет. Опыт такая штука класная Улыбающийся

и я не уверен, насчет вас в этом моменте.
по одной простой причине:
основной юзкейс сингелтонов - глобальные точки доступа.
и нужны они в основном только для каких то подсистем.

это например: сетевая подсистема, звуковая подсистема, графическая, логгер, и тп.
зачастую они вообще никак между собой не связаны.
количество их весьма ограниченно.
Угу. При этом всякие там системы логирования начинают уходить от этого дела. Если работали с какой либо иплементации osgi, так там вообще проспокойно можно без этого обойтись. Едиственная проблема нормальны иплементаций с++ фришных нет.

прозрачные сингелтоны - количество может исчисляться десятками и сотнями.
но они не есть головная боль, просто потому,
что программисты могут даже и не подозревать об их существовании.
Во первых прозрачный синглтонт тоже саможе что гарячий лед.
Во вторых я уже ответил.
Записан
Tuxford
Гость
« Ответ #18 : Август 07, 2015, 10:47 »

Пожалуйста. Самый примитивный пример.
Код:
class UpdateDownloadManager
{
  static UpdateDownloadManager* pInstance;
public:
  static instance();
  void apply(const std::string& url);
private:
  UpdateDownloadManager();
  Items compareWithLocal();
  void saveNewState(const Items& items);
}

вот это мне больше нравится.

итак, начнем.

покажите дизайн использования.
напишите тесты, конкретно для вот этого вот класса.
смысл тестов - они должны проиллюстрировать как использовать данный класс в работе.

мне вот например, не понятно,
что вообще должен делать данный класс,
для чего он нужен,
и как с ним работать.

проиллюстрируйте использование.
Вот Вы напишите. Я не умаею, так чтоб не получилось через одно место.
Записан
_Bers
Бывалый
*****
Offline Offline

Сообщений: 486


Просмотр профиля
« Ответ #19 : Август 07, 2015, 23:06 »

Значит мало еще работаете. На моей практики 80% за последние 10 лет, синглотоны были вообще запрещены.

мне не интересны голословные утверждения.

мне интересны конкретные ответы на конкретные вопросы.
Записан
_Bers
Бывалый
*****
Offline Offline

Сообщений: 486


Просмотр профиля
« Ответ #20 : Август 07, 2015, 23:08 »

Вот Вы напишите. Я не умаею, так чтоб не получилось через одно место.

это ваш класс.
вы не в состоянии привести пример-иллюстрацию использования?

ваше "я не умею" создает не очень хорошее о вас впечатление.

полагаю, от вас я так и дождусь вразумительного ответа на свой вопрос.


« Последнее редактирование: Август 07, 2015, 23:17 от _Bers » Записан
Tuxford
Гость
« Ответ #21 : Август 10, 2015, 11:06 »

Вот Вы напишите. Я не умаею, так чтоб не получилось через одно место.

это ваш класс.
вы не в состоянии привести пример-иллюстрацию использования?

ваше "я не умею" создает не очень хорошее о вас впечатление.

полагаю, от вас я так и дождусь вразумительного ответа на свой вопрос.
Очень просто.
Чуть ниже написан код. Вот и напишите следующие тест кейсы.
1. Несуществующий файл. Сторедж бросает ексцепшин.
2. Сторедж недоступен. Сторедж бросает ексцепшин.
3. Сторедж вернул пустыйе данные. Ошибка стореджа, но менеджер не должен загрунтся.
4. Загрузка кривых данных в сторедж. Сторедж на такое бросит ексцепшин.
Суть такая. Что надо создать фейковы
Записан
Tuxford
Гость
« Ответ #22 : Август 10, 2015, 11:10 »

Вот Вы напишите. Я не умаею, так чтоб не получилось через одно место.

это ваш класс.
вы не в состоянии привести пример-иллюстрацию использования?

ваше "я не умею" создает не очень хорошее о вас впечатление.

полагаю, от вас я так и дождусь вразумительного ответа на свой вопрос.
Очень просто.
Чуть ниже написан код. Вот и напишите следующие тест кейсы.
1. Поличить несуществующе даные. Сторедж бросает ексцепшин.
2. Сторедж недоступен. Сторедж бросает ексцепшин.
3. Сторедж вернул пустыйе данные. Ошибка стореджа, но менеджер не должен загрунтся.
4. Загрузка кривых данных в сторедж. Сторедж на такое бросит ексцепшин.
Суть такая. Что надо создать фейковый сторедж, с помощью которого будут моделироватся эти ситуации.
Если брать реальность, то сторедж это удаленный https сервер, который поднять локально не возможно. На случай если скажете что проще поднять локально. - Локально не получится.
Записан
_Bers
Бывалый
*****
Offline Offline

Сообщений: 486


Просмотр профиля
« Ответ #23 : Август 13, 2015, 00:30 »

Очень просто.
Чуть ниже написан код.

ниже нет никакого кода.
вы какой то бестолковый.

я рассчитывал на интересную дискуссию.
а у нас тут оказывается проблема:
автор кода не в состоянии проиллюстрировать использование собственного класса.
Записан
Tuxford
Гость
« Ответ #24 : Август 13, 2015, 12:57 »

Очень просто.
Чуть ниже написан код.

ниже нет никакого кода.
вы какой то бестолковый.

я рассчитывал на интересную дискуссию.
а у нас тут оказывается проблема:
автор кода не в состоянии проиллюстрировать использование собственного класса.
http://www.prog.org.ru/index.php?topic=28871.msg213629#msg213629
Записан
_Bers
Бывалый
*****
Offline Offline

Сообщений: 486


Просмотр профиля
« Ответ #25 : Август 13, 2015, 23:46 »


вы вообще понимаете, что такое "пример использования" ?

что делает этот класс?
зачем вообще нужен?
где описания методов?

где функция main с демонстрацией использования механизма?

вы пихаете один непонятный класс в другой,
такой же не понятный.
без каких либо объяснений принципа работы.

это - очень тупо с вашей стороны.

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

если человек не в состоянии проиллюстрировать идею,
и принцип использования своего класса,
то с ним просто не о чем  разговаривать.





Записан
Tuxford
Гость
« Ответ #26 : Август 14, 2015, 10:29 »

Вы отличаете разницу между юнит тестированием и функциональным тестирование. Представьте себе что вы не в курсе что этот код делает. Просто тужно убедится что этот код рабатоет правильно. Что-то скачивает и что-то сохраняет куда-то. Представьте себе что скачивает он какие-то строки, а сохраняет скажем куда-то на другой сайт. Суть такова, что в тестах сторедж надо подменить. Все поняли?

Скаразу скажу, что такие ответы потому что на синглтонах это сделать почти не возможно. Как коговорят "слив засчитан".
Записан
_Bers
Бывалый
*****
Offline Offline

Сообщений: 486


Просмотр профиля
« Ответ #27 : Август 22, 2015, 01:18 »

Вы отличаете разницу между юнит тестированием и функциональным тестирование.

да.

Представьте себе что вы не в курсе что этот код делает. Просто тужно убедится что этот код рабатоет правильно. Что-то скачивает и что-то сохраняет куда-то. Представьте себе что скачивает он какие-то строки, а сохраняет скажем куда-то на другой сайт.

бред.

программист всегда в курсе, что делает код,
который он пишет, или использует.

можно быть не в курсе деталей реализации стороннего механизма.
но нельзя быть не в курсе его интерфейса (апи библиотеки, если угодно).

если программист написал:
Код:
foo(params);

значит он в курсе, что делает функция foo,
что обозначают её аргументы,
и что он хочет получить в результате.


я предложил вам продемонстрировать
простейшие тесты для класса UpdateDownloadManager.
смысл которых - проиллюстрировать дизайн использования.

ничего особенного.
просто покажите на примерах,
как используется ваш класс.


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

вы не в состоянии ответить на простейшие вопросы.



Суть такова, что в тестах сторедж надо подменить. Все поняли?

пока вы не предоставили информацию:
зачем вообще нужен класс UpdateDownloadManager,
и как его следует использовать,
нет никакого смысла рассматривать детали его реализации,
и нет никакого смысла рассматривать
его возможное взаимодействие с другими классами.

Скаразу скажу, что такие ответы потому что на синглтонах это сделать почти не возможно.

своими бестолковыми ответами,
вы создали у меня впечатление,
что вы просто ни бум бум в теме.

я могу упростить вам задачу: пусть это будет не сингелтон.
перепишите класс UpdateDownloadManager так,
что бы это был самый обычный класс.

и покажите тестами дизайн использования.

при этом, меня не интересуют детали его реализации.
нужно только две вещи: зачем он нужен, и как им пользоваться.

я предполагаю, что вы не справитесь и с этой задачей.
потому что у вас проблема не с сингелтонами.




Как коговорят "слив засчитан".
деццкий сад.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #28 : Август 22, 2015, 12:57 »

_Bers, Вы напрасно теряете время и слова. Для нормального обсуждения нужно нормальное взаимопонимание, а здесь его нет и следа
Вы в курсе, что такое ТДД? Работали с множеством синглтонов? Скорее всего нет. Поробатаете на большом проекте с десятком синглтонами, тогда 100% мнение измените.
Значит мало еще работаете. На моей практики ...
Если работали с какой либо иплементации osgi, так там ..
Понты-понты Улыбающийся Кстати создал тему TDD - там тоже ничего вразумительного не услышал, у людей применять все это особого желания нет.
Записан
_Bers
Бывалый
*****
Offline Offline

Сообщений: 486


Просмотр профиля
« Ответ #29 : Август 22, 2015, 13:46 »

Кстати создал тему TDD - там тоже ничего вразумительного не услышал, у людей применять все это особого желания нет.

что-то как-то не видно вашей темы.
не понятно, чего именно нет желания применять: технику TDD ?

просто я вот например, использую при любой возможности.
и без горячо любимого gmock чувствую себя уже не комфортно.
к хорошему быстро привыкаешь.
Записан
Страниц: 1 [2] 3 4   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.061 секунд. Запросов: 22.