usunięcie if - design patterns

Odpowiedz Nowy wątek
2016-07-20 20:34
urbus
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?

Pozostało 580 znaków

2016-07-20 20:38
1

brakuje kontekstu - kodu wywołującego


Szacuje się, że w Polsce brakuje 50 tys. programistów

Pozostało 580 znaków

2016-07-20 20:56
0

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


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.

Pozostało 580 znaków

2016-07-20 21:00
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...


((0b10*0b11*(0b10**0b101-0b10)**0b10+0b110)**0b10+(100-1)**0b10+0x10-1).toString(0b10**0b101+0b100);

Pozostało 580 znaków

2016-07-20 22:30
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.

edytowany 2x, ostatnio: Azarien, 2016-07-20 22:34

Pozostało 580 znaków

2016-07-21 11:50
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 :)

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