Modyfikacja metody, zmiana argumentów

Odpowiedz Nowy wątek
2018-11-28 18:44
Wielki Terrorysta
0

Hej,
Być może banalne pytanie, ale zastanawiam się, czy aby na pewno robię to prawidłowo. Załóżmy, że mam metodę, którą po jakimś czasie potrzebuję zmodyfikować. Przy okazji modyfikacji, dochodzą kolejne nowe argumenty/zastępuje istniejące argumenty innymi. I teraz po modyfikacji sygnatury tej metody, musiałbym zmieniać ją w każdym miejscu, w którym jej użyłem.
Wydaje mi się, iż jest to nieodpowiednie, gdyż wymusza potem modyfikację w nawet wielu miejscach kodu. Jak należy podchodzić do tej sytuacji?

Pozostało 580 znaków

2018-11-28 19:29
1

Poczytaj o przeciążaniu metod, może to będzie odpowiedź na twój problem.

edytowany 1x, ostatnio: a_s_f, 2018-11-28 19:30

Pozostało 580 znaków

2018-11-28 22:27
0

Void f(int a, int b =0, string c="Text")
O to chodzi?

Pozostało 580 znaków

2018-11-29 11:17
Zimny Krawiec
0

Przeciążanie metod polega na tym że metody mają tę samą nazwę ale różnią się od siebie parametrami , typ zwracany nie ma znaczenia. Tak jak np. z metodą WriteLine klasy Console .

Pytanie czy potrzebne jest ci klika wersji metod czy jedna dobra ? Po ostatnich twoich postach myślałem że ty jesteś bardziej zaawansowany .
Parametry mogą mieć jeszcze modyfikatory ref , out , param , mogą być pozycyjne, nazwane , opcjonalne , Parametry wyjściowe - out, można również odrzucać . Zamiast argumentu w wywołaniu metody podajesz znak podkreślenia .

Pozostało 580 znaków

2018-11-29 12:51
Zimny Krawiec
0

Popełniłem błąd wyżej . Są argumenty nazwane a nie parametry

Pozostało 580 znaków

2018-11-29 13:05
1
Wielki Terrorysta napisał(a):

Wydaje mi się, iż jest to nieodpowiednie, gdyż wymusza potem modyfikację w nawet wielu miejscach kodu. Jak należy podchodzić do tej sytuacji?

Czasami tak po prostu się zdarza i nie da się nic z tym zrobić. Ale często przyczyną takiej sytuacji jest przekazywanie do metody wielu parametrów zamiast jednego. Np taka metoda:

public void Metoda(int i, string s, bool b)

zamienia się w taką:

public void Metoda(int i, string s, bool b, double d)

i wtedy jest problem.
Ale jakby metoda od początku wyglądała tak:

public void Metoda(Obiekt o)

gdzie Obiekt to oczywiście:

class Obiekt
{
    Int I { get; set; }
    string S { get; set; }
    bool B { get; set; }
}

to problemu by nie było.

Druga rada to po prostu wywoływać jedną metodę w jednym miejscu. Z kodem biznesowym zazwyczaj jest to osiągalne. Metody używane w wielu miesjcach to raczej infrastruktura, a ta nie powinna się zmieniać.


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0