Форум программистов, компьютерный форум, киберфорум
Священные войны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.81/21: Рейтинг темы: голосов - 21, средняя оценка - 4.81
0 / 1 / 0
Регистрация: 29.01.2018
Сообщений: 14

Обожаю фреймворк Qt, а продукция Microsoft - отстой

24.09.2018, 07:12. Показов 5997. Ответов 140
Метки qt (Все метки)

Студворк — интернет-сервис помощи студентам
Я люблю Qt , ибо он действительно кроссплатформеный. После Qt-creator IDE ,
MSVS кажеться полнейшем г... где мильон абсолютно не нужных функций. Короче MSVS это г... такойже как и Windows , и вообще в Майкрософт работают больные на голову люди, про что говорит их ОС и вся их продукция .
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.09.2018, 07:12
Ответы с готовыми решениями:

Гусеницы - отстой?
Потихоньку и у меня зреет мысль о построении робота. Купил себе в качестве будущей платформы танк, вчера пришел заказ по почте. Ну и вчера...

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

Ваш язык программирования - отстой
Ваш язык программирования - отстой

140
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
04.10.2018, 13:59
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Да мне просто тоже интересна реакция человека, который жёстко подсел на ооп-вакцину.. Реакция хорошо видна..
не пишите мне свои глупости.
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
04.10.2018, 14:08
Цитата Сообщение от Usaga Посмотреть сообщение
Я ничего не понял. Если вам надо поле, то его и берите. В чём проблема?
Мне нужен класс с полем.

Добавлено через 1 минуту
Цитата Сообщение от hoggy Посмотреть сообщение
не пишите мне свои глупости.
Хорошо. Если мне нужно будет сослаться на ваши слова, то буду ссылаться косвенно, через указатель.

Добавлено через 5 минут
Цитата Сообщение от Usaga Посмотреть сообщение
Всё ещё ждём конкретику по проблемам "ООП"
Ну я как бы конкретно спросил: а так можно? Никакой конкретики в ответ..
Вот вам ещё конкретика. У вас в ооп всё по умолчанию. Всё скрыто действиями компилятора. ООП взят от жизни, где есть обьекты, обьекты общаются с друг другом, посылают сообщения.. А где же ЗАКОНЫ, по которым они живут. А нам говорят: усё по умолчанию. Не знаешь по умолчанию, твои проблемы, бро.. В нормальном обществе нет умолчаний. Там действует Конституция, УК, и много других законов, которые каждый может прочитать. В ооп этого нет. Там всё спрятано, всё молчаливо.
0
Эксперт .NET
 Аватар для Usaga
14733 / 9507 / 1363
Регистрация: 21.01.2016
Сообщений: 35,869
04.10.2018, 14:11
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Мне нужен класс с полем.
Так берите.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Ну я как бы конкретно спросил: а так можно?
Вас два раза спросили "что вам надо?". Т.е. вопрос не совсем ясен. Всё есть, но взять нужное вы не можете почему-то. ООП мешает?

Цитата Сообщение от CoderHuligan Посмотреть сообщение
У вас в ооп всё по умолчанию. Всё скрыто действиями компилятора.
У кого "у вас"? И что по умолчанию?
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
04.10.2018, 14:20
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Наследование преподносится, как средство для лучшего повторного использования кода. Вот мы реализовали класс именно таким образом. Уже ничего не исправить. Но нам нужен именно этот класс без своих хвостов.
Ну тогда зачем говорите что "нам нужна только int d"? Если нужен класс без хвостов, его всего и используйте. Если "нужно отрезать кусочек" то это нужно делать не снизу иерархии, а вверху, со стороны корня (т.е. отделяя класс, содержащий только int d и вынося всю логику работы с этой переменной из функций struct daz в функции этого класса, а соответственно в daz заменяя эту логику на вызовы функций новосозданного класса, на чём автоматически повышается вторичное использование).
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
04.10.2018, 14:29
Цитата Сообщение от Usaga Посмотреть сообщение
Так берите.
Взял.
Цитата Сообщение от Usaga Посмотреть сообщение
Вас два раза спросили "что вам надо?".
Я два раза ответил.
Цитата Сообщение от Usaga Посмотреть сообщение
У кого "у вас"? И что по умолчанию?
Я всё понял, не надо..
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
04.10.2018, 14:31
Цитата Сообщение от TopLayer Посмотреть сообщение
После того, как вы унаследовались от класса Rect, вы уже не можете просто так взять и добавить в Rect метод, находящий его периметр - вам придётся ковыряться в производных классах, иначе они просто унаследуют неверную для них реализацию метода.
Для этого может быть применено удаление метода у производных классов, до тех пор пока не будет создана их верная реализация. Удалённый метод даст ошибку компиляции при попытке вызова.
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
04.10.2018, 14:31
Цитата Сообщение от TRam_ Посмотреть сообщение
отделяя класс, содержащий только int d и вынося всю логику работы с этой переменной из функций struct daz в функции этого класса, а соответственно в daz заменяя эту логику на вызовы функций новосозданного класса, на чём автоматически повышается вторичное использование
То есть нужен жёсткий рефакторинг кода..
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
04.10.2018, 14:32
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Мне нужен класс с полем.
А зачем тебе поле, когда всё что связанно с этим полем, будет делать метод класса?
0
907 / 664 / 318
Регистрация: 23.10.2016
Сообщений: 1,543
04.10.2018, 14:32
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Что касается замены списка на хэш-таблицу, то мы просто меняем(переключаем) логическую часть(функцию(и)), так как функции вызываются не на прямую, а хотя бы через указатель, косвенно.
Почти то же самое, что и в ООП. Только больше оверинжиниринга. Зачем переключать, если можно просто переписать? Старая функция становится полностью бесполезна после такого изменения.
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Каждый участок имеет свою ответственность. И все подчиняются общим соглашениям, которые жёстко прописываются в документации.
Код ответственный, документированный, не содержит ошибок и т.д. Не поспоришь.
Цитата Сообщение от hoggy Посмотреть сообщение
значит ваша функция - говно.
пересматривайте дизайн.
Понятно. Удачи с прямоугольниками, у которых площадь не равна произведению сторон =).
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
04.10.2018, 14:42
Цитата Сообщение от CoderHuligan Посмотреть сообщение
То есть нужен жёсткий рефакторинг кода..
Это не рефракторинг. Это избавление кода от дублирования (исправление "индусскости").

Добавлено через 7 минут
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Поле. Но их может быть очень много.. и методов. Определённых.. А ненужные мне просто не требуются. тащить их с собой за пазухой?
Когда методы private, они ни к кому не тащатся - они существуют только для своего класса и больше ни для кого.
0
907 / 664 / 318
Регистрация: 23.10.2016
Сообщений: 1,543
04.10.2018, 14:42
Цитата Сообщение от TRam_ Посмотреть сообщение
Для этого может быть применено удаление метода у производных классов, до тех пор пока не будет создана их верная реализация. Удалённый метод даст ошибку компиляции при попытке вызова.
Такой код даст ошибку компиляции?
C++
1
2
Rect r = new RoundRect();
double p = r.GetPerimeter();
В любом случае, было нужно изменить один класс - пришлось менять 2.
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
04.10.2018, 14:51
Цитата Сообщение от TopLayer Посмотреть сообщение
Зачем переключать, если можно просто переписать? Старая функция становится полностью бесполезна после такого изменения.
А если нужно откатить изменения назад? Например в рантайме?
Цитата Сообщение от TRam_ Посмотреть сообщение
А зачем тебе поле, когда всё что связанно с этим полем, будет делать метод класса?
Ну, мне нужен метод с полем в придачу. Я же для примера приводил, а не конкретно.
Цитата Сообщение от TRam_ Посмотреть сообщение
Когда методы private, они ни к кому не тащатся - они существуют только для своего класса и больше ни для кого.
Знаю.
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
04.10.2018, 14:56
Цитата Сообщение от TopLayer Посмотреть сообщение
Такой код даст ошибку компиляции?
Даст.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class Rect
{
    double a;
    double b;
    
public:
    Rect() : a(0.0), b(0.0) {}
    virtual ~Rect() {}
    
    virtual double GetPerimeter() { return 2*(a+b); }
};
 
class RoundRect : public Rect
{
public:
    RoundRect() : Rect() {}
    virtual ~RoundRect() {}
    
    virtual double GetPerimeter() override = delete;   
};
 
 
int main()
{
    Rect *p_r = new RoundRect();
    double p = p_r->GetPerimeter();    
    delete p_r;
}
error: deleted function ‘virtual double RoundRect::GetPerimeter()’
Добавлено через 3 минуты
Цитата Сообщение от CoderHuligan Посмотреть сообщение
А если нужно откатить изменения назад? Например в рантайме?
В рантайме у тебя структура данных будет неподходящая. Потому что хэш-таблица в памяти расположена ну вообще не так как список. То есть в любом случае преобразовывать одно в другое придётся.
0
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
04.10.2018, 15:09
hoggy, ты никогда не читал? от этой ссылки и дальше https://isocpp.org/wiki/faq/pr... le-ellipse
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
04.10.2018, 15:11
Цитата Сообщение от TRam_ Посмотреть сообщение
Такой код даст ошибку компиляции?
Даст.
Перечитал - таки запрещено удалять виртуальные функции. Но зато можно оставить виртуальную функцию без реализации,
C++
1
virtual double GetPerimeter() override;
тогда вылезет ошибка на этапе линкования. А если заменить на
C++
1
Rect *p_r = new Rect();
либо не вызывать GetPerimeter(), то ошибка невозможности линкования пропадёт.
0
907 / 664 / 318
Регистрация: 23.10.2016
Сообщений: 1,543
04.10.2018, 15:18
Цитата Сообщение от TRam_ Посмотреть сообщение
Даст.
Круто. Но всё равно это костыль. Лучше уж такую такую иерархию делать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class RectBasedFigure
{
protected:
    double a;
    double b;
    RectBasedFigure() : a(0.0), b(0.0) {}
public:
    virtual ~RectBasedFigure() {}
};
 
class Rect : public RectBasedFigure
{
public:
    Rect(): RectBasedFigure() {}
    virtual double GetPerimeter() { return 2*(a+b); }
    virtual ~Rect() {}
};
 
class RoundRect : public Rect
{
public:
    RoundRect() : Rect() {}
    virtual ~RoundRect() {}
 
};
Добавлено через 3 минуты
Смысл в именовании. Если к вам приходит объект типа Rect, то можно полагать, что это действительно прямоугольник, а не какая-то шняга, имеющая что-то общее с ним.
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
04.10.2018, 15:26
Цитата Сообщение от TopLayer Посмотреть сообщение
Если к вам приходит объект типа Rect, то можно полагать, что это действительно прямоугольник, а не какая-то шняга, имеющая что-то общее с ним.
В зависимости от задачи. Как уже сказал в посте #104, если есть черты, требующие реализации, но не относящиеся по смыслу к прямоугольнику, нужно выносить их в отдельный класс.
Если реализация подобных черт не требуется, то почему не оставить так?
0
907 / 664 / 318
Регистрация: 23.10.2016
Сообщений: 1,543
04.10.2018, 15:40
Цитата Сообщение от TRam_ Посмотреть сообщение
Если реализация подобных черт не требуется, то почему не оставить так?
Потому что можно сделать сразу по-нормальному, написав аж целых 6 лишних строчек кода.
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
04.10.2018, 15:49
TopLayer, для вычисления периметра/площади - согласен, лучше выделить сразу. А если стоит задача только отрисовки (например), а с закруглёнными углами отличается по сути только радиусом закругления - то можно было бы и оставить.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
04.10.2018, 16:06
Цитата Сообщение от TopLayer Посмотреть сообщение
Удачи с прямоугольниками, у которых площадь не равна произведению сторон
да не нужно здесь никакой удачи.
здесь нужно подумать:
зачем вообще нужно было наследоваться от прямоугольника?

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

Добавлено через 4 минуты
Цитата Сообщение от ct0r Посмотреть сообщение
ты никогда не читал? от этой ссылки и дальше
читал. такие статьи нужно подписывать: "Ваш Кэп".

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

людям, которые не понимают,
такие статьи не помогут.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.10.2018, 16:06

Круто это либо отстой?
Всем привет, сделал вот такой сервис, который по сути переносит код с контроллера в сервис. Но вот вопрос, насколько это вменяемо? ...

Почему С++ отстой до 2020 года
Это не холиварная тема, здесь мы не спорим, какой язык лучше! Ну что, недавно собирался комитет стандартизации, который обсуждал...

Кабельная продукция, выбор.
Не знал куда написать, решил что тут оно как-то уместнее. Дело в чем. Есть один прибор. Точнее его экспериментальный образец. Собран,...

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

Выпуск нескольких ГП (Готовая Продукция)
Здравствуйте, я хочу создать документ Выпуск ГП и в нем делать выпуски ГП, но есть вопрос как к примеру если я добавляю в табличную...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
120
Ответ Создать тему
Новые блоги и статьи
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru