Jak nie robić spaghetti

0

Witam,

Mam problem z kodem spaghetti. Niby już znam język programowania na tyle żeby coś tam małego naszkrobać w konsoli, ale zawsze wychodzi spaghetti. Pewnie dlatego że piszę od razu z głowy. I pytanie, jak nauczyć się dobrze pisać programy orientowane obiektowo? Czy to już etap na wzorce projektowe? Czy dobrze jeszcze jakąś książkę przerobić? Jak w ogóle wygląda u Was schemat pisanie prostej aplikacji, zawierającej kilka klas, ale tak by nie powstało spaghetti.
Dzięki za pomoc,
Pozdrawiam,

6

Jak coś napiszesz, to daj do oceny, opinii na forum, to Ci doradzą, pouczą, poprawią.

4
hansikkk napisał(a):

jak nauczyć się dobrze pisać programy orientowane obiektowo?

  1. Pisząc beznadziejne spaghetti
  2. Pisząc równie beznadziejny przekombinowany i najeżony wzorcami kod

I teraz najtrudniejsze

  1. Nauczyć się pośrodkowac i pisać kod dobrze zaprojektowany, ale jednak prosty, naiwny miejscami wręcz (wyciągając wnioski z dwóch poprzednich podejść)

Tylko, ze dojście do 3 to praca na lata, bo musisz nauczyc się pogardy zarówno do spaghetti jak i do wciskania wzorców gdzie popadnie. Wiele osob dochodzi do punktu 2 i tam sie zatrzymuje

Czyli spaghetti jest okej jako etap, problem w tym, ze zwykle ludzie uciekają ze spaghetti w overengineering (który tez jest ok jako ETAP, niestety wiele osób uważa go za ostateczny cel)

0

overengineering
Chodzi o to by na siłę nie udowadniać jakie to zaawansowane sztuczki znam, a iść czasem w prostotę kodu, a zarazem większą czytelność dla ogółu.

5

Musisz nauczyć się dzielić większy problem na pod problemy i zamykać je w klasy, które ukrywają tę złożoność. Gdy cały kod jest w jednej funkcji i wszystko wie o wszystkim to wiadomo, że wychodzi spagetti. A jak ładnie to podzielisz i wrzucisz w hermetyczne pudełka to o wiele łatwiej wtedy taki kod zrozumieć i rozwijać.

5

A piszesz testy? Jeśli zaczniesz (a najlepiej jeśli zaczniesz od pisania testów) to ciężej Ci będzie zrobić spaghetti.

0
lookacode1 napisał(a):

Musisz nauczyć się dzielić większy problem na pod problemy i zamykać je w klasy, które ukrywają tę złożoność. Gdy cały kod jest w jednej funkcji i wszystko wie o wszystkim to wiadomo, że wychodzi spagetti. A jak ładnie to podzielisz i wrzucisz w hermetyczne pudełka to o wiele łatwiej wtedy taki kod zrozumieć i rozwijać.

W teorii to wiem że tak się robi, masz jakieś materiały z których można się nauczyć?

Saalin napisał(a):

A piszesz testy? Jeśli zaczniesz (a najlepiej jeśli zaczniesz od pisania testów) to ciężej Ci będzie zrobić spaghetti.

Nie, nie piszę. Jakieś materiały do przerobienia?

0

Jak wyżej (@Saalin ), z czasem zaczniesz pisać kod pod testy, a to już krok w dobrym kierunku.

0
hansikkk napisał(a):

Nie, nie piszę. Jakieś materiały do przerobienia?

Nie napisałeś nic o technologii, więc najpierw dokumentacja (tutorial) do jakiejś polecanej biblioteki do testowania w danym języku, przykłady (jak robić asercje) i w sumie tyle na początek, później praktyka.

1

Pobaw się TDD, w ten sposób ciężko doprowadzić do spaghetti kodu.

A jeśli chodzi o zwykłe spaghetti to nigdy nie łam makaronu na pół; włóż go do garnka, poczekaj chwilę aż zmięknie i lekko przemieszaj.

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