Следующая функция реализована в C:Как изменить функцию для удовлетворения OCP?
function(struct_XX *p)
{
if(p->A)
{
if(p->B)
{
do something0;
}
if(p->C)
{
do something1;
}
if(p->D && p->E)
{
do something2;
}
if(p->Z)
{
do something3;
}
}
}
каждая ветвь имеет различные вещи, чтобы сделать, это не удовлетворяет принцип Открыт-Закрыт (потому что структура, которая р указывает на не является стабильным, новые поля будут добавлено в него часто, это означает, что новые коды процессов будут добавлены в функция); как он может быть изменен для удовлетворения OCP?
Добро пожаловать на переполнение стека. Вскоре прочитайте страницу [О программе]. «Делают что-то одно и то же, или они разные? Сделайте что-нибудь из того, что «что-то изменит», на что указывает «p'? Каково значение «' ¡¡»в коде? Почему функция не имеет типа возврата? –
В вашем вопросе недостаточно информации, чтобы предложить что-нибудь полезное. OCP требует, чтобы ваш код предоставлял механизмы для расширения функциональности. Какой механизм (ы) предоставляет ваш код для расширения основных функций? –
Вы можете изменить 'struct_XX' определение или если оно исправлено, покажите это нам. –