LINUX.ORG.RU

История изменений

Исправление gh0stwizard, (текущая версия) :

Мой ответ был на то, что да, многие согласны, что use constant имеет недостатки. С другой стороны, если использовать альтернативы, то лучшая альтернатива это sub MY_CONST { 42 }. Минус ее в том, что а) выделяет лишние 500кб памяти; б) на критичном коде это решение тормоз. На оба этих случая забивают и не обращают внимания. Никаких best practice, никаких внесений лишних сущностей. Потому что код на XS единственное верное решение, чтобы разрулить проблемы выше. От того, что перформанс спадет на 20% в случае с sub, тогда когда разница по сравнению с XS в 1000%, это капля в море. Плюсом же такого решения является простота и отсутствие зависимостей. Как практика показывает, вносить XS-код (тот же Internals) можно не во всех окружениях. И да, этот модуль используется предложенным тобой Readonly. Помимо того, этот модуль (Readonly) еще использует tie-интерфейс, который скорей всего даже хуже sub (надо бенчить, без б).

Исходная версия gh0stwizard, :

Мой ответ был на то, что да, многие согласны, что use constant имеет недостатки. С другой стороны, если использовать альтернативы, то лучшая альтернатива это sub MY_CONST { 42 }. Минус ее в том, что а) выделяет лишние 500кб памяти; б) на критичном коде это решение тормоз. На оба этих случая забивают и не обращают внимания. Никаких best practice, никаких внесений лишних сущностей. Потому что код на XS единственное верное решение, чтобы разрулить проблемы выше. От того, что перформанс спадет на 20%, тогда когда разница по сравнению с XS в 1000%, это капля в море. Плюсом же такого решения является простота и отсутствие зависимостей. Как практика показывает, вносить XS-код (тот же Internals) можно не во всех окружениях. И да, этот модуль используется предложенным тобой Readonly. Помимо того, этот модуль еще использует tie-интерфейс, который скорей всего даже хуже sub {} (надо бенчить, без б).