次の関数は C で実装されています。
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;
}
}
}
各ブランチにはさまざまな処理があり、Open-Closed Principle を満たしていません (p が指す構造体が安定していないため、新しいフィールドが頻繁に追加されます。つまり、新しいプロセス コードが関数に頻繁に追加されます) 。 ; OCP を満たすためにどのように変更できますか?