Моя практика похожа на то, что утверждает Джон. Подавляющее большинство перечислений и констант, очевидно, связаны с определенным классом или модулем и объявлены там публично.
Самый низкий уровень моего программного обеспечения называется Утилита и содержит математические процедуры и другие функции и метод общей полезности (а не специальную утилиту для режима этого приложения). В нем есть модуль, который имеет набор функций, которые просто являются служебными функциями / подпрограммами, которые не имеют общей темы. Именно в эту область попадают любые перечисления или константы.
Существует аналогичная область для модели приложения, в которую входят утилиты, которые обычно используются для этого приложения. И это то место, куда идут константы, которые нельзя привязать ни к одному классу МОДЕЛИ.
Итак, есть три области, где константа может быть найдена в моей личной структуре
Объявления класса
Общий полезный модуль модели приложения
Общий служебный модуль утилиты сборки.
На практике только несколько десятков перечислений и констант должны были быть объявлены в любом из служебных модулей. Большинство из них - замедления Win32, используемые функцией Win32, которые импортируются в мою сборку.