Załóżmy, że mamy program w C, którego zadaniem jest odczytanie danych z dwóch plików i znalezienie pewnej relacji R zależnej od danych w obu plikach.
R = R(data1, data2, ...)
Jeśli relacja jest spełniona, program wypisuje dane z pierwszego pliku, ale tylko te które tworzą relację R. Czyli jest to pewnego rodzaju filtracja.
Program przyjmuje jako parametry nazwy plików oraz dodatkowo trzy argumenty opcjonalne, które posiadają wartości domyślne, które też wchodzą do relacji R:
R = R(data1, data2, param1, param2, param3)
Najpierw odczytuję sobie dane z plików i umieszczam je w tablicy, której elementami są struktury (każdy wiersz w pliku jest umieszczony w jednej strukturze). Tablice te to data1, data2. Jak więc uszczuplić liczbę parametrów w funkcji? Mogę oczywiście umieścić dane w zmiennej data, a parametry opcjonalne w zmiennej param:
R = R(data, param)
Czy to właściwy ruch w kierunku refaktoryzacji? W końcu funkcja nadal przyjmuje 5 argumentów, tylko że zaszytych. Idąc tym tropem mogę w jednej zmiennej przemycić 100 argumentów. Być może ważny jest tutaj fakt, że wszystkie argumenty wchodzą do relacji i nie da się ich odseparować. W takim razie miałbym rację. Jak Wy byście to zrobili?