Объявление констант в проекте - PullRequest
5 голосов
/ 11 декабря 2008

Я видел эти два подхода для объявления констант, которые должны использоваться в проекте.

  1. Константы в публичном модуле.

  2. Константы в не наследуемом (запечатанном) классе

Кто-нибудь использует какой-либо другой подход для постоянного сокращения?

Есть ли разница между этими подходами, есть плюсы и минусы?

Спасибо.

Ответы [ 3 ]

13 голосов
/ 11 декабря 2008

Поместите константу в класс, где она наиболее актуальна, например, Math.Pi, Int32.MinValue и т. Д.

Я видел различные константы, которые тоже должны быть перечислениями - особенно для кодов состояния и т. Д.

Я не думаю, что было бы разумно создавать класс (или модуль) только для констант, если на самом деле нет разумного класса, с которым эти константы связаны.

3 голосов
/ 11 декабря 2008

Я согласен с @Jon. Однако для констант, которые являются уникальными для вашего приложения - то есть они являются настройками по умолчанию, параметрами настройки и т. Д., Я иногда создаю класс статической конфигурации со строгим типом для их хранения. Я выставляю значения через свойства с определенными только публичными получателями. Таким образом, их можно загрузить из файла конфигурации, но ссылаться на них в коде как на фиксированные значения.

1 голос
/ 11 декабря 2008

Моя практика похожа на то, что утверждает Джон. Подавляющее большинство перечислений и констант, очевидно, связаны с определенным классом или модулем и объявлены там публично.

Самый низкий уровень моего программного обеспечения называется Утилита и содержит математические процедуры и другие функции и метод общей полезности (а не специальную утилиту для режима этого приложения). В нем есть модуль, который имеет набор функций, которые просто являются служебными функциями / подпрограммами, которые не имеют общей темы. Именно в эту область попадают любые перечисления или константы.

Существует аналогичная область для модели приложения, в которую входят утилиты, которые обычно используются для этого приложения. И это то место, куда идут константы, которые нельзя привязать ни к одному классу МОДЕЛИ.

Итак, есть три области, где константа может быть найдена в моей личной структуре

Объявления класса Общий полезный модуль модели приложения Общий служебный модуль утилиты сборки.

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

...