Я пишу некоторый код, который по существу выполняет операции настройки оборудования промышленной автоматизации.Выполняемая настройка - это, в основном, индивидуальная настройка тысяч и тысяч параметров оборудования.
Вы можете представить большую часть кода как набор процедур, которые выглядят примерно так:
foo_set_x{
foo_param_1 = 1
foo_param_2 = 2
….
}
ПРИМЕЧАНИЕ: вышеприведенный пример является чрезвычайно упрощенным примером
По мере появления новых проектов некоторые параметры меняются, а некоторые нет.Поэтому, когда клиент использует эту утилиту настройки, он отвечает на вопрос, какую спецификацию параметра использовать.
Теперь некоторые подпрограммы изменяются на это:
foo_set_x{
IF param_spec_1 {
foo_param_1 = 1
….
}
IF param_spec_2 {
foo_param_1 = 2
….
}
}
И некоторые подпрограммы изменяются на это:
foo_set_y{
IF param_spec_1 OR param_spec_2 {
foo_param_1 = 1
foo_param_2 = 2
….
}
}
Таким образом, каждый раз, когда появляется новая спецификация параметра, мне приходится менять код в сотнях подпрограмм для поддержки новой спецификации.Мне это не кажется разумным подходом к этому.
Единственное решение, которое я могу придумать, - это создать переменные для каждого параметра.Затем все мои подпрограммы устанавливают параметр в переменную.Никаких утверждений IF или CASE не требуется.
Проблема в том, что, и я не шучу, близко к 5000 различным параметрам.Поскольку я работаю с довольно ограниченным и примитивным языком (НЕ ООП, а на основе C), каждая переменная должна быть глобальной и отнимать много драгоценного пространства.Я даже не могу понять, как я мог бы создать интеллектуальный список переменных из примерно 5000 переменных (минус то, что имеет смысл поместить в структуру или массив).
Спасибо всем.
PSПожалуйста, не стесняйтесь редактировать или предлагать лучшие теги.Я как бы потерялся здесь.