Каждый токен — это функция →

источник: https://daverupert.com/2024/12/every-token-is-a-feature?ref=refind

Я работаю над проектом по созданию дизайн-токенов и решил поделиться с вами тем, что я узнал и что, вероятно, очевидно для всех остальных: каждый дизайн-токен — это функция.

Токен — это магический контракт между дизайном и инжинирингом, если мы согласимся использовать одно и то же имя для абстрактного обозначения одного и того же значения, это даст желаемый результат. Этот мост сам по себе, вероятно, стоит инвестиций, но токены решают еще больше организационных проблем. Мобильное приложение и веб-сайт могут выглядеть одинаково, если использовать один файл JSON. Но подождите, это еще не все! Если синий цвет, выбранный другой командой, недостаточно синий для вас, вы можете создать свой собственный синий цвет и применить его в глобальной области или в области отдельного элемента. Токены как организационная функция — это мощная концепция, но за ней скрывается множество нюансов.

Как и функции, слишком много токенов могут раздуть вашу систему. Недавно я узнал – поскольку мне повезло работать с людьми, которые работают над браузерами – что существует не совсем теоретический предел, при котором браузер начинает испытывать падение производительности, основанное исключительно на количестве переменных CSS. Нет жесткого верхнего предела для количества переменных (мы провели линию на уровне ~500), потому что предел в конечном итоге зависит от размера и глубины вашего DOM. Пересчет стилей и обход дерева являются дорогостоящими проблемами для браузера. Такие токены псевдонимов, как , --foo: var(--bar)усугубляют проблему, и чем более статичным вы можете быть, как --foo: #bada55, тем лучше. Бесконечная настраиваемость и пиковая производительность часто противоречат друг другу.

Как и функции, токены могут создавать небольшие кучки технического долга . «Кто-нибудь еще использует --color-beefcake-primary-2?» — кричите вы в пустоту чата команды. Никто не отвечает, потому что никто не знает. Человек, который знает, ушел из компании пять месяцев назад. Увы, мы будем добавлять больше, пока не найдем время это исправить. Всегда добавляем. Никогда не вычитаем. Как и в случае с функциями, слишком много токенов могут создавать организационные проблемы! Это противоположно тому, что я сказал выше, как это может быть? Можно сгенерировать достаточно токенов, чтобы они стали собственным гиперобъектом , не поддающимся пониманию извне, поэтому благонамеренные люди выбрасываются из системы. Отдельные экземпляры. Одноразовые. Снежинки.

Как и функции, некоторые токены будут иметь огромную отдачу, если будут реализованы, а некоторые токены выгодны пользователю менее очевидно. Вы перекладываете организационную сложность на пользователя . Как и функции, вы можете построить чрезмерно сложную машину вокруг простой концепции, такой как обмен ценностями. Как и функции, люди будут создавать каждую часть, не задумываясь, действительно ли им нужна каждая грань.

Вообще говоря, если кто-то хочет реализовать сотни или тысячи мелких функций в приложении, это, вероятно, красный флаг. Если-выражения обходятся дорого в течение своего жизненного цикла . Но по моему опыту, хорошая система токенов внутри каскада значимых компонентов может заставить продукт резонировать с согласованностью на многих поверхностях, при этом обеспечивая достаточно настраиваемости, чтобы различать, когда это необходимо.