[Ankieta] Używanie GOTO w programach.

0

Co o tym sądzicie ?
Wiem, że na forum są różne opinie dot.właśnie GOTO.
Ja mam neutralne zdanie ;)
Możecie jeszcze napisać, dlaczego używać, a dlaczego nie.
Wesołego Nowego Roku :-)

0

Jasne, że powinno, w uzasadnionych przypadkach. Fanatyzm niespecjalnie się sprawdza także i w naszej branży.

BTW, goto to takie kontynuacje dla ubogich, w takim razie czy kontynuacji nie powinno się używać?

0

Jeśli ktoś uważa że goto jest z natury złe i każde użycie goto jest równoważne z oddaniem duszy szatanowi to znaczy że jest fanatykiem i nie ma co z nim dyskutować. Trzeba pisać taki kod żeby był jak najbardziej czytelny/rozszerzalny/etc. Jeśli goto wpływa dobrze na któreś z poprzednich to ma moje błogosławieństwo. Ale zazwyczaj tak nie jest...

deus napisał(a)

BTW, goto to takie kontynuacje dla ubogich, w takim razie czy kontynuacji nie powinno się używać?

Goto to w sumie także break dla ubogich, return dla ubogich, wywołanie funkcji (bez wrzucania parametrów na stos) dla ubogich i pewnie jeszcze trochę.

0
MSM napisał(a)

wywołanie funkcji (bez wrzucania parametrów na stos) dla ubogich

No właśnie, to rekurencja (ogonowa) dla ubogich... czyli potwierdza się zdanie tego aparata z Newbie, że rekurencja to zło i przeżytek.

0

Na stos z GOTO

0

Nowy Rok blisko, to zaprezentuję postanowienie noworoczne:

W 2011 roku w asm-ie nie użyję etykiet ani niczego podobnego do goto!

PS. Ale gdy to pomieniemy, to jestem raczej na nie, ale pewnie w jakichś rzadkich przypadkach okaże się, że kod z goto jest znacznie bardziej przejrzysty...

0

Pytanie jest dość głupio zadane. Tak, powinno się – ale sytuacje w których się powinno są raczej rzadkie.

0

Imho, zwrot Czy powinno ... oznacza Czy używanie goto jest obowiązkowe?
Sugerowałbym zmianę pytania na Czy dopuszczacie używanie goto?
Ja dopuszczam, jeżeli upraszcza kod (a nie służy do zastąpienia pętli ;-)). Sam używałem goto tylko w plikach wsadowych, w czasach gdy nie istniało ELSE a pliki wsadowe były popularne.

0

Wszyscy używają goto ale w ograniczonej formie, zwykle jako skok na koniec procedury w postaci obsługi wyjątku jak:
try except exit end
i jest polecane użycie goto właśnie w ten sposób a nie inny.

0

Wszyscy, którzy używali goto zostali porwanie przez kosmitów :X

0
Mariusz Jędrzejowski napisał(a)

Wszyscy używają goto ale w ograniczonej formie, zwykle jako skok na koniec procedury w postaci obsługi wyjątku jak:
try except exit end
i jest polecane użycie goto właśnie w ten sposób a nie inny.

I gdzie w tym goto? To jest instrukcja przeskokowa (czy coś podobnego, słaby żem z teorii), tak samo jak głupi if, w końcu tam też skaczesz do else jeśli warunek nie został spełniony, albo przeskakujesz else jeśli warunek się spełnił. Tylko że ifem nie skoczysz na początek dokumentu, albo do środka funkcji.

Mamy tyle różnych konstrukcji i rozwiązań, że naprawdę można sobie odpuścić dokonywanie zamachu na czytelność kodu, kiedy nie jest to potrzebne.

0

"exit" skacze na koniec procedury. Poza tym można stosować ale w wyjątkowych wypadkach "break" i "continue" i raczej nie w pętlach "for" bo to bardzo utrudni analizę programu. Wszystkie nieobsłużone przez try except wyjątki też powodują automatycznie skok na koniec procedury.

0
Mariusz Jędrzejowski napisał(a)

Wszystkie nieobsłużone przez try except wyjątki też powodują automatycznie skok na koniec procedury.

Chyba u tych Twoich kosmitów... Nigdzie nie skacze bo kontekst przestaje istnieć, funkcja nie wraca, lecą handlery będące wyżej, kolejne w łańcuchu.

0

Nie powinno się początkującym programistom mówić, że użycie goto jest dopuszczalne. W swej karierze być może (a być może nie) zawędrują w zakamarki programowania, w których faktycznie użycie goto jest dopuszczalne. Jednak jeśli dowiedzą się o tym zbyt wcześnie, będą widzieć takie okazje dosłownie wszędzie.

0

@up - Wszyscy początkujący jakich znam (w tym ja) na początku używali goto.

Uczyłem się swojego pierwszego języka z pewnej (nawiasem mówiąc, bardzo dobrej) książki o Pascalu. Autor tylko raz wspomniał o goto i to pisząc jedynie że jest złą praktyką i książce nie będzie omówione. Później na własną rękę znalazłem sposób użycia go i napisałem swoją pierwszą grę ;) Aczkolwiek byłem (jestem) samoukiem i nikt mi nie powiedział dlaczego właściwie nie powinienem go używać.

0

Goto? Ale po co?

0

Osobiście jeszcze nigdy nie spotkałem się z sytuacją kiedy goto było by mi do czegokolwiek potrzebne i nie było by sposobu by zrobić tego w inny przejrzystszy sposób.

0
EgonOlsen napisał(a)

Goto? Ale po co?

Spytaj developerów PHP, jakiś rok temu wprowadzili goto do języka, po kilkunastu latach rozwoju...

0

Taki oftop:
"A computer scientist is someone who, when told to 'Go to Hell', sees the 'go to', rather than the destination, as harmful."

0

Wprowadzenie w późniejszych wersjach kompilatorów takich instrukcji jak:
break, continue, exit i automatycznego wyjścia z procedury w razie nieobsłużonego wyjątku właśnie zastąpiło prawie w 100% konieczność używania goto. Te instrukcje są nieco czytelniejsze niż goto a jednocześnie właśnie były najczęściej potrzebne w celu zastąpienia goto, dlatego je wprowadzono.

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