Перейти к контенту

Курилка программистов


Рекомендуемые сообщения

"Чтобы не плодить функций IsXXX()?"

 

Как бы, типа того. Не то, что они объявляются совсем прямо вредными, но сначала понять их смысл: какие и сколько надо, и почему именно функции (и еще хуже - "методы", со всеми накладными расходами).

 

Вообще, так вот подумав, что реально надо в повседневной жизни - это чтобы любой объект, имеющий конфиг, имел свойства, прописанные в конфиге. То есть, если мы в конфиге пишем

"[неведомая фигня]\nтраляля = блаблабла" - то obj.траляля должно быть == блаблабла.

 

кстати, еще неплохо таки сделать дефайны с инклудами, универсальные и для конфигов, и для скрипов.

 

Это закроет весть вопрос с IsXXX() и прочими _g.ammo = [тыща строк] раз и навсегда.

Ссылка на комментарий

Короче - рассуждения.

А была уже идея сделать одну функцию "проверить тип" с двумя аргументами? Первый - объект, второй - нужный тип. Все типы хранятся в хеш-таблице (аля енум). Не ну а чо. А непосредственно тип вещи пишем в св-во объекта. Хотяяя, как то не логично, вид вещи должен представлять класс.

Я бы конечно сделал по ООП, абстракция -> базовый класс -> дочерние классы. В абстрактном классе говорим, что есть метод для проверки объекта, в базовом классе тупая реализация на РАВНО, ну и виртуальным на всякий случай сделать в базовом, чтобы дочерние в случае чего могли переопределить. Дальше по логике это все должно приводиться к уровню абстракции и там вызывается метод. По крайне мере я так ООП представляю :)

PS: а что за негатив к "методам"?

ТЧ 1.0004. SAP и Trans mod

github

Ссылка на комментарий

 

 

  Desertir писал(а):
PS: а что за негатив к "методам"?

Ходят слухи что они неприлично много жрут, всего на свете...

Хотя мне думается надо проверить. Насколько существенна разница.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий
  Desertir писал(а):

Задача в чем заключается? Чтобы не плодить функций IsXXX()?

Насколько я понял, тут еще не все в курсе про smart_cast в движке и что его 3 года назад вытащили в скрипты в проекте Xray Extensions. Все простыни "isWeapon" разом отпали.

 

http://www.amk-team.ru/forum/index.php?showtopic=10339&p=910319

game_object -> Методы для проверки типа объекта -> Регистрация функций в движке

Изменено пользователем Shadows
Ссылка на комментарий

@Zander_driver, начем с того, что в Луа нет методов. На этом можно было бы и закончить, но я проверил тут код ниже.

  Показать
  Результат (Показать)
Изменено пользователем Desertir
  • Спасибо 1
  • Полезно 1

ТЧ 1.0004. SAP и Trans mod

github

Ссылка на комментарий

Кстати про ООП. Интересно и даже по-русски.

  Zander_driver писал(а):

Хватит уже изображать ворчливого старика)

Что ты, я за слово "метод", оно мне нравится, я так сказал потому, что существенной разницы нет. Изменено пользователем Desertir
  • Спасибо 1

ТЧ 1.0004. SAP и Trans mod

github

Ссылка на комментарий

 

 

  Desertir писал(а):
Zander_driver, начем с того, что в Луа нет методов

Хватит уже изображать ворчливого старика) Знаю я про своеобразие "Луа-ООП" который как бы не совсем ООП, от слова совсем не. Но это не мешает нам его так называть.

 

 

 

  Shadows писал(а):
Насколько я понял, тут еще не все в курсе про . . . Xray Extensions

Вот кстати. Я когда заглядываю в тему X-Ray Ext, то вижу там много вроде бы вкусного, но требующего хитрых танцев с бубном при определенных совпадениях фазы луны, нигде не указанных.

Может быть кто-нибудь приведет хотя бы что-то из результатов этого проекта к такому виду, чтобы не стыдно было сюда положить, соблюдая "правила темы" ?

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

 

 

  Zander_driver писал(а):
Может быть кто-нибудь приведет хотя бы что-то из результатов этого проекта к такому виду, чтобы не стыдно было сюда положить, соблюдая "правила темы" ?

Ну а мой пост что, не подходит под эти условия?

Ссылка на комментарий

Нет, не подходит. Много описания вкусностей "смотрите что у нас есть", но нет самих вкусностей. Где готовый собранный файл, который можно положить в папку и пользоваться без шаманских плясок? Не вижу.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

@Zander_driverhttp://rghost.ru/private/7RK6xBwXb/648fb32a73b3e30b2879a8630f0886dc

 

Дефолтная конфигурация, не требующая никаких скриптовых добавок (вроде все отключил).

Изменено пользователем Shadows
  • Спасибо 1
Ссылка на комментарий

2 Desertir: а теперь то же самое, например, со string.* vs. :*строковыми.

И, видимо, имеет значение, сколько и каких аргументов передается, а также использование переменных "внутри" (сколько и откуда).

Изменено пользователем Dennis_Chikin
Ссылка на комментарий

 

 

  Dennis_Chikin писал(а):
2 Desertir: а теперь то же самое, например, со string.* vs. :*строковыми. И, видимо, имеет значение, сколько и каких аргументов передается, а также использование переменных "внутри" (сколько и откуда).

Давайте мы при прочих равных факторах, обозначим список "подозреваемых причин"

А затем проведем исчерпывающий тест. А то эти страшные мифы про то что ООП-код работает в 80 раз медленнее чем состоящий только из прямого вызова функций, уже конкретно достали.


,

GBpEjeq.jpg

Я так понимаю, с расширением Луа от RvP - не совместимо?

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

@Dennis_Chikin, тот же сайт, тот же код, жмакал кнопку Run 3 раза.

  Code (Показать)
Изменено пользователем Desertir

ТЧ 1.0004. SAP и Trans mod

github

Ссылка на комментарий

 

 

  Desertir писал(а):
На движке Сталкера не измеряю принципиально, т.к. там может быть всё, что угодно. Привык использовать то, что доступно сейчас, а не 10 лет назад.

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

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

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

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

Изменено пользователем Desertir

ТЧ 1.0004. SAP и Trans mod

github

Ссылка на комментарий

ладно убедил :)

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...