(Zakładam, że pytanie jest postawione z punktu widzenia projektowania kodu / architektury, a nie projektowania gier, chociaż odpowiedź przynajmniej w pewnym stopniu dotyczy obu).
Jak już powiedziano, potrzebujesz obu i musisz to zrównoważyć. Zarówno przeprojektowanie, jak i za mało zaprojektowanie przepływu / struktury kodu może powodować problemy. Trudno powiedzieć, jaka jest właściwa równowaga, ale ogólnie uważam, że muszę mieć co najmniej niejasne pojęcie, jak reszta kodu połączy się z tym, co programuję w tej chwili, i zastanowić się nad możliwymi problemami, w przeciwnym razie mam tendencję do „zakodowania się w ślepy zaułek” - dostaję się do sytuacji, w której zdaję sobie sprawę „dobrze, teraz dzięki temu, jak rozwiązałem ten problem, stworzyłem nowy problem, który sprawił, że całe moje poprzednie rozwiązanie (lub nawet więcej, w najgorszych przypadkach ) daremny ”.
Generalnie, moim zdaniem, możesz z grubsza ocenić, czy masz właściwą równowagę, myśląc o scenariuszach „co jeśli” jak w „co jeśli później (kiedy wszystko zostanie w pełni zaimplementowane w podobnym paradygmacie, którego używam teraz) dowiesz się ta część A musi działać nieco inaczej, co oznacza, że muszę całkowicie przerobić część B, która się z nią łączy, aby uwzględnić zmiany? ”. Jeśli zmiana architektoniczna w jednej części nie wymaga zmiany więcej niż jednej lub dwóch innych części, a zmiany nie następują kaskadowo (co oznacza, że z kolei trzeba zmienić również kolejne części łączące się z częścią B, a następnie części łączące się z im itp.), kod jest podzielony na przedziały w stosunkowo dobry sposób.
Ale tak naprawdę jest to coś, co można poczuć po zdobyciu doświadczenia. To po części dlatego wszyscy doradzają początkującym graczom, aby najpierw napisali kod czegoś znanego i łatwego (Breakout / Tetris / Snake) i zrobili to całkowicie, ze wszystkimi menu, dźwiękami, efektami, wszystkim, aby gra była w pełni skończona - lepiej zepsuć mniejszy projekt, a zrobienie go (w dobry lub zły sposób) dokładnie pomoże ci zrozumieć, jak daleko sięgają skutki różnych decyzji architektonicznych.