usunięcie if - design patterns

0

Prośba o code review i podpowiedź

mój kod w uproszczeniu wygląda tak:

public bool Method1()
{
  if(condition)
  {
      do_sth_from_other_class();
      return true;
   }
  return false;
}

zarzucono mi, że można wykonać tą funkcjonalność bez if-a wykorzystując design patterns. Moim zdaniem jest to proxy i jest OK. Czy da się ten kod napisać lepiej bez ifa?

1

brakuje kontekstu - kodu wywołującego

0

stawiam na brak umiejętności korzystania z polimorfizmu.

1

Potrójny fail.

  • dostałeś słaby feedback od zespołu (powinni ci byli powiedzieć, co jest nie tak, a nie coś mruczeć o "wykorzystywaniu design patterns")
  • zamiast spytać swojego zespołu, o co chodzi, zakładasz wątek na forum, co sugeruje problemy z komunikacją
  • wątek też słabo stworzyłeś (po takim krótkim kawałku ciężko cokolwiek stwierdzić, można jedynie wziąć szklaną kulę..

Żeby cokolwiek wyrokować, trzeba by spojrzeć na większy kontekst...

2

Ja bym pewnie napisał tak:

public bool Method1()
{
    if (!condition)
        return false;

    do_sth_from_other_class();
    return true;
}

Czyli wyskakujemy z false'em jeśli nam coś nie pasuje, a jeśli powiodą się wszystkie testy to wykonujemy główną robotę i zwracamy true.

Oczywiście można wydziwiać i przerobić jakoś kod unikając ifa, ale po co.

W twoim kodzie, jeśli już zostawić go w takiej formie, brakuje else.

1

"Proxy slyzy do usuniecia ifa...., Kompozyt do usuniecia tego, Fabryka do usuniecia tego... a Command do tego a Fasada do wszystkiego" :)
To nie dziala w ten sposob :)
Tak jak koledzy wyzej wspomnieli: potrzeba szersze spojrzenie na klasy i interakcje.
Trzeba popatrzec na klase w otoczeniu innych klas.

Trzeba uwzglednic pochodzenie warunku i jego zmiennosc, a takze operacje jakie sa wywolywane po nim.

Na koniec... nie warto popadac w paranoje. Duzo ifów to kaszanka i znak ze trzeba refactorowac ... ;) ale jeden :)
Jezeli sytuacja powtarza sie w innych klasach w podobnym kontekscie to fakt ze mozna cos zrobic.

Ale jak wspomnialem...nie nalezy wpadac ze skrajnosci w skrajnosc :)

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