@dlangru

Страница 670 из 719
Pavel
30.08.2018
19:37:01
Или Яве
А вот это кстати было бы здорово, сейчас не пишут как на яве и очень трудно модифицировать код под себя

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

Ievgenii
30.08.2018
19:37:57
Ну смотри

Встречал такой вот подход:

Google
Ievgenii
30.08.2018
19:39:01
Описывают структуры (много или нет, не важно), а потом передают ее/их в объект класса, который, по факту, всего то декорирует его

Так у тебя и наследование и инкапсуляция и все прелести

Но сам объект класса один

А структур много

Pavel
30.08.2018
19:39:48
И никакой оптимизации

Ievgenii
30.08.2018
19:39:52
Конечно, тут масса ограничений

Но удобство разработки +/- то же

Pavel
30.08.2018
19:41:11
Компилятору тут будет трудно сориентироваться.

Ievgenii
30.08.2018
19:41:52
И никакой оптимизации
Что-то мне подсказывает, что это по-любому будет быстрее, чем создавать объект класса на каждую модель данных

А компелятор также оптимизирует

Что он читает из внутреннего поля объекта

Или в объекте есть указатель на структуру и он читает из этой структуры

Google
Ievgenii
30.08.2018
19:43:24
Не вижу большого просидания по перфоменсу

Pavel
30.08.2018
19:44:09
Не знаю, трудно рассуждать абстрактно

Но по примеру вайба видно что там все очень грустно. Вот есть структура TCPConnection и ничего ты с ней не сделаешь.

Ievgenii
30.08.2018
19:44:46
И если углубляться на столько, то если тебе так сильно важна скорость, то использовать классы уж точно не стоит...

Pavel
30.08.2018
19:45:01
А подключение идет через обычный метод connectTCP и ничего ты с этим тоже не сделаешь.

Pavel
30.08.2018
19:45:42
Вот если бы TCPConnection был классом который реализует интерфейс Connection, то можно было бы много сотворить

А так - свалка из структурной типизации, compile-time предусловий и прочего

Ievgenii
30.08.2018
19:46:37
почему?
Накладных расходов на классы больше

Структуры создаются быстрее, все методы финализированны

Pavel
30.08.2018
19:47:32
Ievgenii
30.08.2018
19:47:39
А может и вообще

Я сейчас о Ди говорю

Pavel
30.08.2018
19:48:18
В D - скорее да, вообще - нет.

Ievgenii
30.08.2018
19:48:55
Вот если бы TCPConnection был классом который реализует интерфейс Connection, то можно было бы много сотворить
Как не как, это модель данных, а не модель обработки, соответственно туда очень подходит структура

Pavel
30.08.2018
19:49:51
Ну класс по определению это все что имеет состяние и обладает поведением, tcp connection подходит.

Короче вот как в std сделано, есть Socket, есть TcpSocket, есть UdpSocket, все иерархично

Google
Pavel
30.08.2018
19:50:49
Есть InternetAddress который наследуется от Address

Ievgenii
30.08.2018
19:51:01
И?

Не используй их)

А этот Коннект не должен иметь поведение, а только состояние

Имхо

Все остальное должен делать твой код

А это только модель данных

Так же, как и объект, полученный при выборке из БД

Это должна быть модель данных - структура. Имхо

А вот обработка этой модели - в чем пожелаешь

Pavel
30.08.2018
19:55:26
Почему это не должен иметь поведение. Вот метод close() это и есть поведение

Ievgenii
30.08.2018
19:55:30
В одну единицу времени ты все равно обрабатываешь только одну модель

Pavel
30.08.2018
19:56:21
Да ты вообще походу против ооп

Ievgenii
30.08.2018
19:56:27
Это должно быть отдельно

Pavel
30.08.2018
19:56:38
если возвращаться к отдельно данные отдельно методы для работы с ними, то это процедурный стиль, ты не сможешь изменить поведение конкретного объекта

Ievgenii
30.08.2018
19:56:41
Pavel
30.08.2018
19:56:48
голые данные ничего не могут сделать

Ievgenii
30.08.2018
19:56:49
Но там, где оно должно быть

Google
Ievgenii
30.08.2018
19:57:14
Структура - данные

Класс - их обработка

Создаёшь объект класса и передаешь в него по очереди структуру

И обрабатывай ее там

С полным ООП

И СМ будет работать минимум...

Это дело каждого

Pavel
30.08.2018
19:59:12
Зачем плодить структуру и класс если класс это и есть считай структура? Ты плодишь сущности

Admin
ERROR: S client not available

Ievgenii
30.08.2018
19:59:13
Зачем плодить структуру и класс если класс это и есть считай структура? Ты плодишь сущности
Если ты выбираешь из БД 1000 записей, ты создаш 1000 объектов класса

Ievgenii
30.08.2018
20:00:09
И СМ будет работать

А так создавай массив структур

1 класс

Pavel
30.08.2018
20:00:29
Pavel
30.08.2018
20:00:32
Ievgenii
30.08.2018
20:00:40
И обрабатывай по очереди свои структуры

Google
Ievgenii
30.08.2018
20:00:55
Давно как-то делал замеры

За сколько можно создать 2 миллиарда структур

И тоже количество классов

Идинтичны по своей структуре

Pavel
30.08.2018
20:02:45
Генераторы не упраздняют списки.

Ievgenii
30.08.2018
20:02:50
Время колоссально разнилось

Pavel
30.08.2018
20:03:07
Ну прально потому что объект на куче выделяется. Но это все перпендикулярно, скорость создания объекта не относится к свойствам ООП вообще

сделай аллокатор и emplace и будут объекты создаваться с такой же скоростью как структуры

Pavel
30.08.2018
20:04:12
Ну вобщем я тебе ввыше и говорил, производительность - говно :) Тормоза и фризы

Ievgenii
30.08.2018
20:04:37
У вас есть выбор

1. Не писать на Ди

2. Смириться с СтопВорлд

3. Начать адаптироваться и, к сожалению, бороться с СМ

Pavel
30.08.2018
20:06:37
Вообще, если язык требует следования какой-то узкой парадигме, то зачем он такой нужен? Или допилить, или выбросить.

Pavel
30.08.2018
20:08:27
в go очень круто GC сделан, он минимум боли доставляет

Pavel
30.08.2018
20:09:05
Я говорю о языках общего назначения.

Страница 670 из 719