Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   вопрос о статических константах (http://www.flasher.ru/forum/showthread.php?t=214813)

Appleman 12.12.2017 18:02

У меня тогда наверное уже совсем наивный вопрос. А когда вообще уместно использование констант экземпляров и уместно ли? Получается, что если возникает необходимость что-нибудь "отлить в граните" даже для использования экземпляром, то проще и правильнее создать константу на уровне класса как статическую. Или нет?

Wolsh 12.12.2017 18:41

Публичных? Ни разу не встречал, ибо это бессмыслица.
Константа это то, что задается один раз.
Соответственно, она не может быть разной у разных экземпляров, так как объявляется в теле Класса.
Тогда какой смысл хранить ее в экземплярах, если она не может быть индивидуальной "экземпляровской"?

caseyryan 12.12.2017 18:51

Цитата:

Сообщение от Appleman (Сообщение 1203380)
У меня тогда наверное уже совсем наивный вопрос. А когда вообще уместно использование констант экземпляров и уместно ли? Получается, что если возникает необходимость что-нибудь "отлить в граните" даже для использования экземпляром, то проще и правильнее создать константу на уровне класса как статическую. Или нет?

Статические константы одни для всех экземпляров класса. Так как это константа (в английском их правда называют constant variable, и на эту тему я встречал некоторые пояснения, но не суть), значит ее значение не изменится 100%, поэтому нет никакого смысла создавать их на уровне экземпляров и бесполезно забивать ими оперативку многократно дублируя. Конечно по меркам современных, даже не компов, а телефонов, это капля в море, но все же, как по мне - это моветон и бессмыслица.

Ещё есть устверждение, что обращение к константам проиходит быстрее, чем к переменным. Я встречал такое на некоторых форумах, особенно по JS, где есть куча любителей использовать const вместо var или let там где это вообще возможно. Но как по мне, так это довольно сомнительное утверждение, и лично я использую константы всегда только как статики. А если бы в as3 были enum'ы, то использовал бы их

Appleman 12.12.2017 19:01

Wolsh, caseyryan, спасибо. Исчерпывающе.

Добавлено через 1 минуту
Цитата:

Сообщение от Wolsh (Сообщение 1203383)
Тогда какой смысл хранить ее в экземплярах, если она не может быть индивидуальной "экземпляровской"?

Вот именно эта мысль и стала причиной озвученного изначально вопроса.

Zebestov 13.12.2017 14:32

Цитата:

Сообщение от caseyryan (Сообщение 1203385)
Статические константы одни для всех экземпляров класса. Так как это константа … ее значение не изменится 100%

Да, именно потому что она статическая, потому что вот (см. п. 4)

0l3 23.12.2017 18:32

Кроме того, статики выносят отдельным классом для логического объединения однотипных объектов.
Пример: в классе MouseEvent собраны события CLICK, MOUSE_OVER и тд. Затем этот класс группируется в пакет events с аналогичными классами: KeyboardEvents, TextEvent.. помимо специфичных методов и свойств, у каждого из них общий признак - хранение событийных констант.
Иначе, если хранить константы CLICK, MOUSE_OVER в классе Mouse, что логически приходит на ум, тогда мы смешиваем котлеты и мухи. Так как класс Mouse задуман для манипуляций курсором мыши, его вынесли в пакет ui, события отделяются в свою логическую группу.
Вся эта детализация приходит с возрастанием сложности проекта и построение "правильной" структуры, тоже не простая штука..


Часовой пояс GMT +4, время: 19:25.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.