[Moscow.pm] Readonly vs Const::Fast
Ruslan Zakirov
ruz на bestpractical.com
Вт Июн 26 09:20:25 PDT 2012
2012/6/26 Ilya Chesnokov <chesnokov.ilya на gmail.com>:
> 26 июня 2012 г., 16:33 пользователь Ruslan Zakirov
> <ruz на bestpractical.com> написал:
>> 2012/6/26 Alexey Shrub <worldmind на mail.ru>:
>>> 26.06.2012 01:19, Ruslan Zakirov пишет:
>>>
>>>> Это правило должно гореть в аду :)
>>> Какое: "юзать Readonly" или "не юзать use constant"?
>>
>> Юзать Readonly как советует PBP.
>
> А что так?
Точной фразы не буду искать, но суть "практики" был понят так: "не
юзайте constant потому что они не true read only", когда основное
использование - это constant folding и возможность их поменять :) Вот
несколько шаблонов, когда используется constant:
use constant DEBUG => 0;
Можн подменить при загрузке модуля или просто поправить файл для
отладки. Основной плюс в том что целые блоки кода выкидываются при
компиляции.
use constant ARRAY_INDEX_FH => 0;
use constant ARRAY_INDEX_XXX => 1;
use constant ARRAY_INDEX_XXX => 2;
Используется для доступа к масиву в целях эфективности и
читабельности, например объект на массиве вместо хеша.
use constant BITX => 1;
use constant BITY => 2;
use constant BITZ => 4;
Булева алгебра, флаги в одном скаляре и так далее. Опять же в угоду
скорости и улучшение читабельности.
use constant HAS_MODULE_X => eval { require X; 1 };
Опять же constant folding.
Ну и где тут место для use Readonly?
> --
> Best regards,
> Ilya Chesnokov
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
--
Best regards, Ruslan.
Подробная информация о списке рассылки Moscow-pm