[CDR 2022] ООП в VBA есть ли смысл.

DukereD

макрософил
Топикстартер
Сообщения
462
Реакции
114
Собственно холиварный топик и есть сам вопрос.
Есть ли смысл использовать классы в VBA и какие это преимущества дает кроме "удобства кода". Будет ли меньше корел глючить изза проблем с памятью и ShapeRang'ами?
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
а объектная (!) модель разве не в классах описана?
 
Последнее редактирование:

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 183
Реакции
10 843
Будет ли меньше корел глючить изза проблем с памятью и ShapeRang'ами?
С чего вдруг? Назовите хоть одну теоретическую причину с чего б должно было глючить меньше при заворачивании функций в классы?
 

DukereD

макрософил
Топикстартер
Сообщения
462
Реакции
114
С чего вдруг? Назовите хоть одну теоретическую причину с чего б должно было глючить меньше при заворачивании функций в классы?
так вот и я о том же. :) я сам приверженец классического подхода через SUB :)
думаю стоит ли переписывать код под классы или нет никакого смысла ) поэтому и спрашиваю: есть ли какие-то преимущества?
 

DukereD

макрософил
Топикстартер
Сообщения
462
Реакции
114
а объектная (!) модель разве не в классах описана?
ну сами объекты оно то понятно что на классах. но будет ли смысл в макросе написанном на классах. в приросте производительности, стабильности или еще чем-то.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 183
Реакции
10 843

DukereD

макрософил
Топикстартер
Сообщения
462
Реакции
114
немного почитал про ООП единственное, что нашел в качестве преимущества это то, что если выгружать объекты т.е. типа set obj = nothing то будет как бы экономить память. но по сути использовать не глобальные а локальные переменные внутри функций куда экономней )))
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 183
Реакции
10 843
В VBA ООП рудиментарное
 

Акулыч

Участник
Сообщения
29
Реакции
10
По беспределу. Конструкции более сложные, больше ресурсов едят.
По идее, должна создаваться таблица виртуальных методов. Опять же, могут быть проблемы при отладке кода. Как-то писал макрос, так столкнулся с такой фигней - если создать брекпоинт, в Watches добавить классовую переменную, то при остановке Корел зависал и вылетал. Если переменную не добавлять, то всё работало.

Но надо отдать должное, есть в классах и плюсы. Например, при выборочной сортировке по ряду параметров (длина, ширина, цвет заливки, цвет обводки, позиция и пр.) можно не использовать ветвление с выбором нужного свойства, а использовать тот же CallByName.
 
  • Спасибо
Реакции: DukereD