Wpis z mikrobloga

Drogie miraski z #programowanie ,

Przerabiam obecnie rozne algorytmy zapisane za pomoca rekurencji, nie rozumiem jednak symboli takich jak ? i :

Ogolnie skad taki zapis, domyslam sie, ze jest to warunkowy, jednak nie moge nigdzie znalezc informacji na ten temat.

Przyklad takiej funkcji (chodzi mi glownie o ten pierwszy return):

int NWD(int a, int b)
{
if(a!=b)
return NWD(a>b?a-b:a,b>a?b-a:b);
return a;
}
  • 20
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

(warunek) ? zrób jeżeli warunek spełniony : zrób jeżeli warunek niespełniony;
czyli jeżeli a > b to pierwszym argumentem jest a-b jeżeli nie to a
drugi argument podobnie tzn. b-a jeżeli b>a albo b jeżeli b<= a
Kod jest szpetny i nie pisz tak :P
  • Odpowiedz
@emu23: Nie pisalem tak nigdy, ot spotkalem sie z tym w ksiazce od C++ i na sieci ; chcialem zrozumiec po prostu o co w tym chodzi :p

Dzieki jeszcze raz !
  • Odpowiedz
@pejczi: no i ogolnie taka moja rada. Dobry kod to nie taki, ktory zajmuje malo linijek/znakow, ale taki, ktory sie latwo czyta. Te instrukcje warunkowe zaciemniaja czytelnosc kodu. Staraj sie ich unikac.
  • Odpowiedz
@pmez: Bzdury! Według Roberta Martina(uncle bob) jeśli masz jakiekolwiek klamry przy if'ach czy for'ach to znaczy, że nie zakończyłeś refactoringu ;) "Extract till you Drop."
  • Odpowiedz
@prog1101: rzeczywiście, fakt z klamrami wziąłem ze współpracy z bardziej doświadczonymi kolegami. Kwestia klamr jest o tyle potrzebna, że gdy zmieniasz kolejność linijek, możesz przez nieuwagę podmienić to, co miało być w klamrze. A fakt, że jeśli nie masz przy tym unit testów to inna sprawa :)
  • Odpowiedz