Czyli można powiedzieć, że ubrałeś we własne słowa bardzo ważną maksymę - done is better than perfect
. I słusznie. Zwłaszcza, że robisz to hobbystycznie, więc można wiele rzeczy wybaczyć.
No ja to bym polemizował z tym „hobbystycznie” — patrz, że zdecydowana większość oprogramowania jest w ten sposób wytwarzana, a już szczególnie gry komputerowe. Od dawna znacznie ważniejszy jest deadline niż jakość, więc gówniany kod nie jest czymś nadzwyczajnym. ;)
Z tym goto
to też nie jest oczywista sprawa. O ile w taki sposób kodu nie pisze się od czasów powszechności Assembly (w końcu po to wymyślono instrukcje warunkowe, aby go nie używać), tak nadal są dla niego zastosowania. Szczególnie jeśli mamy do czynienia z algorytmami wielokrotnie wykorzystującymi własne fragmenty, w sposób z pozoru chaotyczny (np. w funkcjach szyfrujących), gdzie instrukcje warunkowe wymusiłyby wydzielanie tych fragmentów do osobnych podprogramów, kosztem wydajności (tak, inline
jest, ale kompilator może go olać).
Mi goto
absolutnie nie przeszkadza, dla mnie podział kodu na sekcje z etykietami nie jest nieczytelny (oczywiście pod warunkiem, że jego zastosowanie jest sensownie uargumentowane, a sam kod napisany w sposób przejrzysty) — tym bardziej, że ostatnio sporo asma się naczytałem. Inni pewnie go nie trawią i cóż — nie muszą. A niektórzy będą krzyczeć i szydzić jeśli tylko zobaczą goto
, nieważne w jakim kontekście. To tak samo jak z ludźmi, którzy widząc coś kolorowego w przestrzeni publicznej od razu krzyczą „LGBT! Pedały!'. Cóż, idiotów jak wiadomo nie brakuje.
Kwestia instrukcji warunkowych też jest ciekawa — dla mnie np. nie ma ”bardziej czytelnej” konstrukcji kodu niż odpowiednio przygotowana drabinka if
ów. Jeśli mam 50 linijek kodu a w nim drzewko 15 warunków, to widzę w całości cały algorytm, mam wszystkie możliwe rozgałęzienia w zasięgu wzroku, więc nie muszę niczego szukać, aby zrozumieć jak działa. Ale to jest powszechnie złe, bo ktoś wymyślił coś takiego jak złożoność cyklomatyczna i drabinki if
ów są nie do przyjęcia. I co tu począć…
Są jeszcze zmienne globalne — tutaj też jest ciekawie. :D