Рассмотрим следующий класс:
class Something : ISomething {
public void DoesSomething(int x) {
if (x == 0) {
x = 1;
}
}
}
Я хочу, конечно, удалить магическое число - мои модульные тесты проходят успешно и т. Д., Но я хочу изменить этот ужасный магический номер.
Я использую C #, но я думаю, что эта проблема довольно общая. Чтение из конфигурационного файла (xml-файл) выполняется следующим образом:
ConfigurationManager.AppSettings["MyOldMagicNumber"]...
Что, конечно, было бы проверкой. Я мог бы легко сделать частную функцию в этом классе, которая помечена как виртуальная. Его цель инкапсулировать этот код выше. Это позволило бы мне получить доступ к моим модульным тестам, чтобы переопределить и подключить мое собственное значение.
Мой вопрос -
Это плохо, что я делаю? Смотрите заголовок.
Edit:
Это для игры - поэтому, скорее всего, во время разработки значения будут часто меняться, и повторная сборка будет рутиной. Я должен был упомянуть, что приведенный выше код является общим, я сделал его таким, чтобы вопрос был как можно более простым. Немного контекста, хотя - что «0» - это границы игровой зоны.
Заранее спасибо.