Константы - прекрасные люди - они могут удерживать в уникальном месте значение, которое используется везде в вашем коде. Для изменения этого значения требуется только одна простая модификация.
Жизнь крутая.
Ну, это обещание. Реальность иногда другая:
- Вы изменяете значение константы
LogCompleteFileName
отL:\LOGS\MyApp.log
до\\Traces\App208.txt
и получаете два файла:\\Traces\App208.txt
для трасс и\\traces\App208.txt.log
для журналов... - Вы меняете
TransactionTimeout
с 2 до 4 минут, и вы по-прежнему получаете таймаут через 2 минуты (после того, как вы провели день, вы обнаружите, что вам также необходимо изменить тайм-аут СУБД и тайм-аут менеджера транзакций...). - Вы заменяете
SleepTimeInMinutes
от1
до10
, и вы не видите никаких изменений (через час или около того вы обнаружите, что имя константы вводит в заблуждение: зернистость - это не минута, а миллисекунда...). - Еще более тонкий: вы меняете
CompanyName
от, скажемYahoo
доMicrosoft
, но автоматические оповещения по почте все равно отправляются на[email protected]
...
Создание константы - это контракт. Вы говорите своим читателям, что всякий раз, когда они меняют значение, он все равно будет работать так, как они думают, что это должно быть.
Ничего меньше.
Конечно, вам нужно проверить, что вы не вводите в заблуждение своих читателей. Вы должны убедиться, что подразумеваемый контракт прав.
Как вы достигаете этого с помощью TDD? Я просто застрял с этим. Единственный способ, которым я могу проверить изменение для константного (!) Значения, - это установить постоянную настройку приложения... Должен ли я заключить, что ключевое слово const
следует избегать, когда я думаю, что значение может и изменится
Как вы тестируете свои (так называемые) константы, используя TDD?
Большое спасибо заранее:)