Войти
ФлеймФорумПрограммирование

Список модных прог в которых shared_ptr и weak_ptr и unordered_map хорошо зашли (3 стр)

Страницы: 1 2 3 4 517 Следующая »
#30
11:13, 18 авг. 2017

war_zes
> В том числе и умные указатели
> Ибо Бритва Оккама
Умные указатели и есть Бритва Оккама, вместо строчки в начале и строчки в конце, про которую ещё и помнить надо, у тебя лишь одна строчка в начале.


#31
11:28, 18 авг. 2017

1 frag / 2 deaths
> Умные указатели и есть Бритва Оккама, вместо строчки в начале и строчки в
> конце, про которую ещё и помнить надо, у тебя лишь одна строчка в начале.
ну нет. они тоже режутся бритвой:

SharedPtr<Texture> GetTexture(...);
void BindTexture(SharedPtr<Texture> tex);
до:
TextureHandle GetTexture(...); // TextureHandle - простой POD тип-идентификатор
void BindTexture(TextureHandle tex);

:)

#32
11:34, 18 авг. 2017

war_zes
> const SharedPtr<Texture> &
Что это?

#33
11:45, 18 авг. 2017

1 frag / 2 deaths
исправил. это я с работы, уставший...

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

Ведь профессиональный код пишем не в одиночку - но везде разные стандарты и разные требования. И тот, кому эти требования не мешают, быстрее вливается в проект. Тогда как те, кто начинают все переделывать под себя "так правильно" - могут и сроки срывать своими требованиями

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

#34
14:07, 18 авг. 2017

*Lain*
> Эээ.
?

1 frag / 2 deaths
> джекичан.жпг
если в unique_ptr<T> всегда хранится не полиморфный тип, то тогда меняем его на "std::vector<T>" или на обёртку над "std::vector<T>" в которой перегружен "operator->" и прочее барахло. готово.

но обычно я заменяю чисто на std::vector<T> и получаю профит в архитектуре от того, что теперь тут можно хранить не один объект и так даже лучше и собственно это и нужно было, а unique_ptr<T> хотелось воткнуть то ли от жадности то ли от лени.

если в unique_ptr храниться полиморфный тип, то тогда встаёт вопрос как потом это говно сериализовать?
очевидных решения два:
1) использовать тот хитрый трюк с std::vector`ми из #11
2) сделать свой аналог unique_ptr который хранит информацию о типе объекта в дружелюбном для сериализации виде.
внедрять в интерфейс хранимого объекта методы сериализации - плохая идея.
#35
14:13, 18 авг. 2017

  Про "умное" говно для неосиляторов я ещё могу понять, но unordered_map чем не угодил, кроме того, что у него длинное название?

#36
14:14, 18 авг. 2017

джекичан.жпг indeed

#37
14:25, 18 авг. 2017

Zefick
> unordered_map чем не угодил, кроме того, что у него длинное название?
Ты еще спроси, что такое STLPort.

#38
14:28, 18 авг. 2017

Adler
> если в unique_ptr<T> всегда хранится не полиморфный тип, то тогда меняем его на
> "std::vector<T>" или на обёртку над "std::vector<T>" в которой перегружен
> "operator->" и прочее барахло. готово.
Зачем?

Adler
> если в unique_ptr храниться полиморфный тип, то тогда встаёт вопрос как потом
> это говно сериализовать
А вектор причём?

Adler
> 1) использовать тот хитрый трюк с std::vector`ми из #11
Вектора-то причём, можно так же несколько юников в структуру напихать. И даже про виртуальный деструктор не париться.
А вообще-то, открой для себя компонентную систему.

#39
14:45, 18 авг. 2017

1 frag / 2 deaths
> Вектора-то причём, можно так же несколько юников в структуру напихать
это портит дизайн и вводит наблюдателей в заблуждения.

если кто-то видит std::vector<t_a> - то он точно знает что там храниться объекты типа "t_a", а если ты напишешь unique_ptr<t_a> - то появляется возможность хранить в нём объект любого типа унаследовавшего "t_a" => проблему сериализации это не решит.

#40
17:07, 18 авг. 2017

Adler
> это портит дизайн и вводит наблюдателей в заблуждения.
Использование юника в качестве юника портит дизайн и вводит наблюдателей в заблуждения. А использование вектора в качества юника - нет. Ясно.

Adler
> если кто-то видит std::vector<t_a> - то он точно знает что там храниться
> объекты типа "t_a", а если ты напишешь unique_ptr<t_a> - то появляется
> возможность хранить в нём объект любого типа унаследовавшего "t_a" => проблему
> сериализации это не решит.
Ну не пользуйся этой возможностью, например. Напиши обёртку, которая обломает тебе полиморфизм на этапе компиляции, если это так важно.

#41
17:31, 18 авг. 2017

1 frag / 2 deaths
Использование unique_ptr в качестве std::optional портит дизайн и вводит наблюдателей в заблуждения. А использование std::vector в качества std::optional создаёт дизайн, но никогда не вводит наблюдателей в заблуждения.

1 frag / 2 deaths
> Ну не пользуйся этой возможностью, например. Напиши обёртку, которая обломает
> тебе полиморфизм на этапе компиляции, если это так важно.
норм решение, т.к потом можно без проблем его там заменить на std::optional

а потом избавиться от обёртки, если интерфейс тот же.
#42
17:34, 18 авг. 2017

Adler
> Использование unique_ptr в качестве std::optional портит дизайн и вводит
> наблюдателей в заблуждения. А использование std::vector в качества
> std::optional создаёт дизайн, но никогда не вводит наблюдателей в заблуждения.
Массаракш!

#43
19:47, 18 авг. 2017
Adler
Ну наконец у нас прорыв в исскуственном интеллекте. Оп прошёл тест Тьюринга. Ан нет, не прошёл)
#44
1:46, 19 авг. 2017

war_zes
> мне иногда кажется что ты слишком фанатичен. Чем-то ведь и правда походишь на
> эвангелистов Александреску, юнит-тестов и других подобных идеологов
> программирования
> Ты не хочешь признавать простой факт - что любые инструменты нужно применять по
> назначению.

вы свой собственный бред читали?

war_zes
> Сам использую по настроению.

у меня примерно так же поступает сестра.
но она - блондинка. ей типа простительно.

Страницы: 1 2 3 4 517 Следующая »
ФлеймФорумПрограммирование

Тема в архиве.