
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 и ничего ты с этим тоже не сделаешь.

Ievgenii
30.08.2018
19:45:10

Pavel
30.08.2018
19:45:38

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

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:58:55

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

Admin
ERROR: S client not available

Ievgenii
30.08.2018
19:59:13

Pavel
30.08.2018
19:59:56

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 и будут объекты создаваться с такой же скоростью как структуры

Ievgenii
30.08.2018
20:03:43
Структуры я тоже в куче создавал

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

Ievgenii
30.08.2018
20:04:37
У вас есть выбор
1. Не писать на Ди
2. Смириться с СтопВорлд
3. Начать адаптироваться и, к сожалению, бороться с СМ

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

Ievgenii
30.08.2018
20:07:54
GO, PHP, JS

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

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