Jako szybki, zabawny projekt spróbowałem napisać grę w pasjansa. Ale kiedy pisałem system reguł, czułem się brudny , ponieważ mój kod wydawał się zupełnie nieustrukturyzowany i nierozerwalny , głównie dlatego, że moja logika gry była kompletnym kodem spaghetti.
Zetknąłem się z tym problemem już wcześniej i zawsze czuję się niezręcznie, pisząc tę część mojego programu, więc zastanawiałem się, czy są jakieś sprawdzone najlepsze praktyki, jeśli chodzi o definiowanie reguł w grze ?
design-patterns
Dasuraga
źródło
źródło
Odpowiedzi:
Nie sądzę, aby istniało unikalne rozwiązanie, ponieważ wiele problemów wynika z konkretnego problemu.
Możesz użyć wzorca kontrolera widoku modelu: to przenosi (ogranicza) twój problem do „jak zaimplementować zachowanie na kontrolerze”, zachowanie, które zawsze przestrzega zasad.
O ile nie mówimy o bardzo prostych zasadach, sposób ich organizacji stanowi problem z wyrazistością . Zawsze masz do czynienia ze sprzecznymi wymogami bycia prostym (ustrukturyzowanym) i ekspresyjnym (pisz zabawne reguły).
Korzystanie z MVC upraszcza pracę, ponieważ model formalizuje stan, tj. Kontekst, w którym reguły są egzekwowane.
Powiedział, że użyteczne może być wdrożenie kontrolera przy użyciu wzorca strategii i / lub wzorca stanu w celu skomponowania złożonego zachowania pod względem prostszych zachowań przełączalnych. Chain-of-resposibility wzór może pomóc wyrazić zasady natomiast maszyna państwa należy stosować ostrożnie, ponieważ jego „stan” częściowo pokrywa znaczenie modelki z „państwo”.
Użycie wzorca poleceń w kontrolerze może być przydatne zarówno w celu zmniejszenia odpowiedzialności kontrolera (polecenie wie, jak postępować z modelem), jak i ułatwienia dodawania funkcji cofania / ponawiania w kontrolerze.
W każdym razie powinieneś spróbować użyć wzorców projektowych jako wytycznych: są one przydatne, aby uniknąć ponownego wynalezienia koła, szczególnie koła kwadratowego, ale nie każde rozwiązanie problemu składa się z kilku (okrągłych) kół razem.
źródło
Nie jestem pewien, czy będę najlepszy, czy nawet dobry, ale zwykle używam wzorca Observer . Działało mi to wystarczająco dobrze.
źródło
Jeśli nie wykonałeś tej pracy wiele razy, zawsze skończysz z kodem spaghetti. W tym momencie dopiero co zacząłeś: masz wstępny szkic wstępnej specyfikacji. Zapoznaj się z innymi poradami tutaj i poważnie przepisz. A potem jeszcze trochę przepisywania, a potem ... Osobiście nigdy nie jestem pewien, czy uda mi się naprawdę dobrze napisać mój kod, czy po prostu mam dość przepisywania go, ale wydaje mi się, że w końcu mam rację.
Rozwiąż problem z dwóch końców. Postaraj się, aby ogólny projekt miał sens i wybierz małe części, które wykonują proste prace domowe i poprawiają je. Następnie spróbuj przejechać przez oba końce w kierunku środka. Następnie przerabiaj od środka z powrotem do obu końców. Następnie od góry do dołu, a następnie od dołu do góry. Następnie powtórz cały proces.
Zasadniczo masz kolekcję zajęć. Zastanów się nad klasą A. Jeśli klasa A jest dobrze zbudowana, jej klasy, które z niej korzystają, będą automatycznie działać lepiej, niezależnie od tego, czy są dobre czy złe. Jeśli użyje klasy A Klasy dobrze, stosowanych klas zrobi więcej, jednak dobry czy zły one są. Więc zorganizuj swoje zajęcia najlepiej, jak potrafisz, a następnie upewnij się, że każda z nich jest najlepszą z możliwych.
Ważne jest, aby uzyskać jak najlepiej. Zły kod będzie cię prześladować do dnia, w którym go wyrzucisz. W przypadku oprogramowania odrobina dodatkowego polerowania zawsze się opłaca. (Chyba że nikt nie użyje kodu ....)
Podsumowując: sprawdź rzeczywiste porady podane w innych odpowiedziach, a następnie przepisz swój kod, aż uzyskasz coś, co lubisz.
źródło