отдельно взятая функция, которая была написана производительно не испортит архитектуру
если непонятно, что она возвращает, и приходится читать реализацию, в которой чорт ногу сломит, то испортит. В идеале название функции + внешний интерфейс (параметры вызова) должны давать достаточную информацию и без использования типизации. getRandHex()
в этом отношении намного хуже, чем, например, getRandomCssColor({ type: COLOR_TYPES.HEX })
- при рефакторинге своего решения пришел бы к такой схеме. Все же читабельность намного важнее перфоманса, на фронте нечасто бывают сложные вычисления