Хранить большое число в String

Хранить большое число в String и заново парсить его при каждом сложении. Звучит как антипаттерн, но именно так работал Integer в Kotools Types. Kotools Types - это Kotlin Multiplatform-библиотека для описания сущностей предметной области через отдельные типы. До версии 5.2.0 её Integer хранил значение как строку. Каждая арифметическая операция выглядела примерно так:

String → число → вычисление → String

Такой подход позволял работать с большими целыми числами без ограничений Long. Но цена компромисса росла вместе с количеством цифр и операций: значение приходилось постоянно парсить и форматировать заново. В Kotools Types 5.2.0 внутреннюю реализацию заменили:

- JVM использует BigInteger; - JavaScript использует BigInt; - Kotlin/Native получил собственную реализацию.

Теперь число остаётся числом во время вычислений. Парсинг нужен только при вводе строкового значения или его обратном преобразовании (разбор изменений). Что здесь интересно? Это хороший пример компромисса в Kotlin Multiplatform. Можно выбрать универсальное представление, которое работает везде, но позже обнаружить, что удобная модель хранения стала плохой моделью вычислений. Не храните данные в формате сериализации дольше, чем это действительно необходимо.

А как вы относитесь к такому компромиссу?