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