[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