перечитывая себя
Thursday, 19 August 2010 16:11![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Бля, вот как можно таким мудаком быть-то?
class Device : public QObject
{
....
Device* parent;
QString deviceUdi;
QString parentUdiString;
....
}
Это засунуть в QList.
Нужно понимать, что Device однозначно идентифицируется своим UDI и бОльшая часть действий начинается с поиска объекта по UDI.
А потом написать вот такой WTF по связыванию детей с родителями при инициализации:
Пиздец, O(n^2). Нахуя вообще Device* parent, если он избыточен и вполне достаточно знать QString parentUdiString ? А вот зачем: чтобы когда понадобиться полезть к родителю, можно было просто сходить по указателю, вместо вызова ещё одного WTF:
Блядь, ну для чего-то же существует QHash, ну какого хуя в 21 веке делать тупорылый поиск? И нахуя Device делать объектом, если на самом деле хватает typedef struct?
Интересно, чего я такого покурил когда два года назад писал эту поебень?
class Device : public QObject
{
....
Device* parent;
QString deviceUdi;
QString parentUdiString;
....
}
Это засунуть в QList
Нужно понимать, что Device однозначно идентифицируется своим UDI и бОльшая часть действий начинается с поиска объекта по UDI.
А потом написать вот такой WTF по связыванию детей с родителями при инициализации:
foreach (Device *device,storageDevices())
foreach (Device *parentDevice,storageDevices())
if (parentDevice->udi() == device->parentUdi()) {
device->setParent(parentDevice);
break;
}
std::cerr << "[E] Parents done\n";
Пиздец, O(n^2). Нахуя вообще Device* parent, если он избыточен и вполне достаточно знать QString parentUdiString ? А вот зачем: чтобы когда понадобиться полезть к родителю, можно было просто сходить по указателю, вместо вызова ещё одного WTF:
Device *Hal::findDevice(const QString &deviceUdi) {
foreach (Device* device,storageDevicesList)
if (device->udi() == deviceUdi)
return device;
return 0;
}
Блядь, ну для чего-то же существует QHash, ну какого хуя в 21 веке делать тупорылый поиск? И нахуя Device делать объектом, если на самом деле хватает typedef struct?
Интересно, чего я такого покурил когда два года назад писал эту поебень?
no subject
2010-08-19 14:07 (UTC)no subject
2010-08-19 14:27 (UTC)no subject
2010-08-19 16:26 (UTC)Помню, в любой старой книжке по Паскалю обязательно показывалось, как реализовывать linked lists, стек и очередь - уже и на этом спасибо)
no subject
2010-08-20 07:39 (UTC)Короче компухтер сайнс образца 1950, и это в книжке 1981 года!
no subject
2010-08-19 16:22 (UTC)Си? Схема?
no subject
2010-08-19 22:00 (UTC)no subject
2010-08-20 07:34 (UTC)Но на самом деле надо учить руби, или питону, или джаваскрипту. Если мы хотим учить Программированию, а не кодерству.
no subject
2010-08-20 07:32 (UTC)У схемы круглые скобочки и RPN, но можно ECMAScript например http://www.crockford.com/javascript/little.html ;)
no subject
2010-08-19 15:50 (UTC)Даже если не использовать QHash, то QObject::setObjectName() дает возможность дать имя объекту, а затем QObject::findChild() позволяет найти его по имени, а QObject::findChildren() -- по регулярному выражению относительно имени.
no subject
2010-08-19 16:19 (UTC)Ладно бы просто делать объектом -- при правильной реализации оверхед нулевой, зато инкапсуляция, конструкторы и все такое.
Но нахрена его от QObject наследовать и тащить таблицу виртуальных функций и кучу всякого мусора впридачу?)
Ну и еще я бы хранил не QList<Device*>, а просто QList<Device> - из-за того, что в QString реализован copy-on-write, это выйдет дешевле, чем аллокация объектов в динамической памяти. Ну или, как я понимаю, в данном случае - QHash<QString, Device>;
p.s. Надо посмотреть свой код пятилетней давности (я тогда как раз тоже Qt баловался). Думаю, найду много интересных WTF:)
no subject
2010-08-20 07:48 (UTC)ООП головного мозга сильно с толку сбивает, вот что я скажу. Получается даже на вид код громоздкий, и без всякого профита - сейчас переписываю на Glib, и получается проще, читабельнее, меньше буков и один исходник вместо пяти.
Когда индустриальное программирование, я понимаю. Сотни быдлокодеров, десятки девелоперов, архитекты. Там конечно ООП позволяет выжить.
> p.s. Надо посмотреть свой код пятилетней давности (я тогда как раз тоже Qt баловался). Думаю, найду много интересных WTF:)
Код в студию! ;)