Xoniks
offline
Опыт:
1,858Активность: |
Зачем пишут константы?
просмотрев некоторые заклинания заметил что создают триггер и пишут там
etc... для чего ?? |
27.03.2012, 18:54 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Doc
offline
Опыт:
63,163Активность: |
Больше для понту. А так вообще это типа настройки. |
27.03.2012, 19:00 | #2
+0/−10
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
alpha
offline
Опыт:
7,387Активность: |
для удобного управления кодом, в основном
Тут, к примеру, "Использовать хэштеэбл = да", поставив значение "нет" в алгоритме она использована не будет, если это сделано не просто как комментарий мол в системе используется хеш-таблица
Это сокращения для читабельности, скорее всего
Всё это можно заменить дефайнами для простоты |
27.03.2012, 19:02 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
Doc ничего не понимает в кодинге, так вот объясняю:
оптимизатор подставляет их в места использования, тем самым ускоряя работу кода, кроме того, основная их задача - запретить пользователю изменять их, чтобы не вызвать человеческих ошибок, т.е. это политика проектирования (причем одна из самых старинных) есть еще константные функции (в жассе они унылы) - сделаны для того, чтобы явно дать знать, что функция ничего не изменяет снаружи (или метод - не меняет свой класс)
кроме того, константные функции могут вызывать только другие константные функции, тем самым поддерживается политика чтение / запись и, опять же, оптимизатор может вложить тело константных функций в места их вызова (читать inline), тем самым в разы ускоряя работу кода засчет небольшого его увеличения
ну, это для справки)
ScorpioT1000 добавил:
можно, если нету адекватного оптимизатора (я например раньше не полагался на JassHelper, но сейчас он хорошо делает свое дело) дифайны теряют типобезопасность, т.е. не сразу ясно, какого типа был дифайн (особенно если там юзертип или "класс") и с этим возможны косяки (особенно в реалтайме, когда париться придется несколько часов), ведь код забывается со временем |
27.03.2012, 19:19 | #4
+2/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Doc
offline
Опыт:
63,163Активность: |
ScorpioT1000, все это не относится к жассу, успокойся. Особенно политика проектирования.
Так вот, мое сообщение:
Подразумевало, что это может ускорить работу кода(чем если ипользовать неконстанты), но настолько незначительно, что это просто не влияет.
И поверь, я об этом знаю не меньше тебя. |
27.03.2012, 19:19 | #5
+0/−4
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
Потом изза таких как ты приходят люди на работу и пишут говно с говном, потому что у них всё "для понту".
ScorpioT1000 добавил: Кстати в жаве ни о какой константной политике и речи не идёт =) максимум get/set и final (который вообще не для того предназначен изначально) |
27.03.2012, 19:25 | #6
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
prog
offline
Опыт:
32,865Активность: |
ScorpioT1000, читай собственную подпись, там отлично объяснено почему в джаве нет констант как таковых. |
27.03.2012, 19:44 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
prog, читай что я написал выше про константные методы. |
27.03.2012, 19:49 | #8
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
prog
offline
Опыт:
32,865Активность: |
ScorpioT1000, в основу джавы заложены другие принципы, исключающие ручную низкоуровневую оптимизацию кода. Оптимизация байткода в джаве происходит автоматически, на уровне виртуальной машины. |
28.03.2012, 00:04 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Doc
offline
Опыт:
63,163Активность: |
Стоит разделять различные принципы написания в различных языках, а не гнать все под одну сидваплюсгребенку. В жассе ни о какой низкоуровневой оптимизации и тем более проектной политике речи идти не может, т.к. во-первых, язык абсолютно скриптовый и тормозной сам по себе, во-вторых, не существует серьезных проектов на нем, в-третьих, не существует серьезных IDE, в которых может быть применена эта проектная политика, а в четвертых, ты и сам все это и понимаешь и непонятно почему упираешься рогом в сраный жасс.
Плюсы - самый лучший язык. После асм =) и речь ещё как идёт, я же не виноват, что это у тебя ничего "не идёт" © Sc
Это уже твое субъективное мнение :) Все-таки ни одного серьезного продолжительного проекта вк3 не видел, где было-бы больше одного жасс-программиста и где всерьез нужна была-бы политика проектирования.
Да, я такой субъективный, такой изменчивый. Я тебе назвал масс причин юзания констант, которые уже применяются сейчас в самых крупных проектах, а ты насрал какого-то сомнительного говна и защищаешь его © Sc Отредактировано ScorpioT1000, 29.03.2012 в 13:24. |
28.03.2012, 00:43 | #10
+3/−2
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
alexprey
познающий Unity
offline
Опыт:
68,501Активность: |
ScorpioT1000:
Хорошо звучит. Doc: Проектирование оно и в Африке проектирование. Оно применима для всех языков, как это бы странно не звучало |
28.03.2012, 09:10 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,184Активность: |
в ванильном джасе - настройки + понт
в надстройках - инлайн методы, читай совершенно копеечная оптимизация которая нужна только задротам, там экономия пару тиков. в нормальных языках это имеет более "глубокий смысл" однако если код разрабатывает один человек - опять таки или понт или настройки. |
29.03.2012, 10:09 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
Они нужны чтобы при надобности превратить в переменные. |
29.03.2012, 10:28 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Uncolo
offline
Опыт:
580Активность: |
Xoniks, к примеру у тебя такой код:
Код:
где нибудь ты меняешь значение Х и У к примеру на 100. , а тебе нужно вернуть начальное значение - 10. , то можно присовить константу defaultXY к X и Y, чтобы не перебирать весь код и вручную менять к примеру со 100 на 200. самый простой пример и далеко не единственный |
29.03.2012, 11:04 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
Кстати, Векс использует логические константы при его условной компиляции (static if), это так, к слову.
Насколько я помню, JassHelper пытается делать это со всеми, и константностью при этом не руководствуется.
Макроопределения же (define) не должны по идее использоваться как inline функции, и вообще, это штука взрывоопасная, позволяющая стрелять себе не только в ноги.
Опасно на самом деле. Лучше как раз использовать константы (значения которых оптимизатор подставит в код). |
29.03.2012, 23:09 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
alpha
offline
Опыт:
7,387Активность: |
ADOLF, опасно-опасно.. А чем? |
30.03.2012, 01:30 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
сложные конструкции может и не распарсить + щитай внутри них некоторые дифайны то не пашут ) это вам не C препроц |
30.03.2012, 04:20 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|