kamikazze 266 Опубликовано 1 Февраля 2015 только прикрутить еще куда-то сбоку систему ивинтов и песочницу от одного конкретного автора (указать, какого именно) ? Означает, что нет никакого смысла заниматься некрофилией в особо извращенной форме и перелопачивать вещи, которые уже давно у всех либо перелопачены, либо уже написано свое нормальное, которое и используется а о древости подобной все давно забыли. Это раз. Второе - рефакторинг - дело конечно хорошее, но только тогда когда он реально нужен. Ну то есть вообще вот совсем реально без него никак. В противном случае это чистый спорт, с претензией на рекорды. Спортивные, которые как бы вообще делаются только ради рекордов. Т.е. например нет никакого особого смысла рефакторить скрипты, которые стабильно работают и при этом вызываются допустим один раз при загрузке игры и далее вообще никак не дергаются. Потому что ну не нужно. Полученный миллисекундный выигрыш в скорости загрузки игры не компенсирует никак потраченного на рефакторинг времени. Это не говоря уже о том, что зачастую перестаравшись с рефакторингом, можно сделать текст модуля тупо нечитаемым, и затруднить себе последующую отладку и вообще работу с модулем. 1 2 Отладчик и скриптер мода OGSE. Автор схемы "Компаньоны", стреляющего БТРа и многих других полезностей Поделиться этим сообщением Ссылка на сообщение
kamikazze 266 Опубликовано 1 Февраля 2015 Таки вопрос опять же: что делать с приведенным выше образцом ? В музей моддинга Сталкера под стекло. Указанные проблемы/возможность проблем (про "перестаравшись" и про затраты времени) - да, согласен, есть. Да, несомненно, есть спортивный элемент, в какой-то степени. Или не спортивный, а разгребая вот то, что, опять же, в приведенном примере - заодно и переписал. Вы лучше вот что сделайте. В движке игры есть специальные функции для профилирования кода. Вот эти: C++ class profile_timer { profile_timer (); profile_timer (profile_timer&); operator +(const profile_timer&, profile_timer); function stop(); function start(); function time() const; function __tostring(profile_timer&); operator <(const profile_timer&, profile_timer); }; На них очень легко себе сделать инструмент для профилирования. Например вот такой: https://dl.dropboxusercontent.com/u/54347025/ogse/ogse_profiler.script Так вот очень советую перед тем как какие-то участки кода переписывать, замерить профилировщиком время их исполнения до рефактора. Затем если время кажется ну уж очень большим - сделать рефактор и проверить снова. Обычно (если в исходном скрипте не совсем уж лютый дерьмокод) полученные результаты напрочь, полностью и навсегда отбивают желание из спортивного интереса переделывать трейд-менеджер и остальное мелкое одноразовое добро. Lua-подсистема на самом деле очень и очень быстрая, медленней всего в ней, как ни странно, работют вызовы функций из движка, поэтому даже тотальный рефактор всего и вся способен добавить не более нескольких процентов скорости (опять же если это не дерьмокод, где на каждом апе перебираются все 65535 объектов игры). 1 Отладчик и скриптер мода OGSE. Автор схемы "Компаньоны", стреляющего БТРа и многих других полезностей Поделиться этим сообщением Ссылка на сообщение