Gdzie mogę znaleźć ćwiczenia projektowe do pracy? [Zamknięte]


16

Uważam, że ważne jest, aby nadal ćwiczyć umiejętności rozwiązywania problemów. Pisanie własnych mini-projektów to jeden sposób, ale innym jest próba rozwiązania problemów opublikowanych online. Łatwo jest znaleźć ciekawe quizy programistyczne online, które wymagają zastosowania sprytnych algorytmów do rozwiązania - Project Euler jest jednym z dobrze znanych przykładów.

Jednak w wielu projektach życiu rzeczywistym projektowania oprogramowania - szczególnie w początkowych fazach - ma duży wpływ i na późniejszych etapach nie może być manipulowane tak łatwo jak zwykły algorytmów. Aby poprawić te umiejętności, szukam dowolnej kolekcji problemów projektowych.

Kiedy mówię „projekt”, mam na myśli abstrakcyjny projekt rozwiązania programowego - na przykład, jakie będą moduły i jakie są zależności między nimi, w jaki sposób dane będą płynąć w programie, jakie dane należy zapisać w baza danych itp. Problemy projektowe to problemy, które należy rozwiązać na wczesnym etapie każdego projektu, ale ich rozwiązaniem jest schemat tablicy bez jednego wiersza kodu.

Oczywiście w tego rodzaju problemach nie ma jednego poprawnego rozwiązania, ale będę szczególnie zadowolony z każdego miejsca, w którym będą wyświetlane zalety i wady typowych rozwiązań, które można zastosować do rozwiązania problemu.


Odpowiedzi:


7

Co powiesz na Code Kata . Zrobiłem kilka z nich, i są zabawne, a wyzwanie jest na tyle duże, że zawsze trzeba się czegoś nauczyć.

Komentarze do każdego kata zazwyczaj zawierają wystarczającą ilość informacji, aby pomóc odpowiedzieć na wszystko, co utknęło.


Pierwszy jest z pewnością problemem projektowym, ale miałem wrażenie, że pozostałe są znacznie bardziej zorientowane na kod. Spojrzę na to jeszcze raz, dzięki!
Oak

3

Zacznij od klasycznego problemu projektowego: KWIC.

David Parnas wykorzystał KWIC jako przykład w swoim klasycznym artykule na temat modułowości: Kryteria , które należy stosować w rozkładaniu układów na moduły , które każdy powinien prawdopodobnie czytać co 10 lat.

KWIC, w kontekście słów kluczowych w kontekście , to prosty problem z indeksowaniem i sortowaniem, polegający na czytaniu wierszy tekstu, a następnie obracaniu każdego wiersza na podstawie słów kluczowych (np. Z wyłączeniem „the”, „with”), dodając każdą zmianę do listę, którą posortujesz. Chodzi o to, że użycie KWIC byłoby przydatne do wygenerowania indeksu dla książki. W czasie swojego klasycznego artykułu Parnas powiedział, że doświadczony programista może rozwiązać go w ciągu jednego do dwóch tygodni, ale Prawo Yannisa mówi, że można to teraz zrobić w ciągu jednej do dwóch godzin . [Systemy operacyjne i biblioteki standardowe stały się znacznie lepsze.]

Przeczytaj artykuł Parnasa, a gdy tylko będziesz w stanie zrozumieć, co powinien zrobić program KWIC, idź i napisz własne jako ćwiczenie projektowe. Następnie przeczytaj resztę artykułu, który omawia dwa różne projekty: oba są modułowe, ale jeden osiąga ukrywanie informacji, a drugi nie.

Po zapoznaniu się z przykładem KWIC, będziesz w stanie docenić inne dokumenty projektowe, które go wykorzystują. Na przykład w artykule Decoupling Change from Design Michaela VanHilsta wykorzystano go do pokazania naprawdę interesującej techniki projektowania przy użyciu szablonów C ++. I dopóki mówimy o szablonach i projekcie C ++, przeczytaj artykuł Czarnecki i Eisenecker Synthesizing Objects .

Przejście od KWIC to inne klasyczne przykłady, takie jak przykład Spacewar , który został przeniesiony / przeprojektowany w kilku językach, takich jak Python i AspectJ .

Oczywiście, każdy program może być użyty jako ćwiczenie projektowe, ale KWIC i Spacewar to przykłady, w których można spojrzeć na kilka alternatyw.


Re: Twoje wyjaśnienie ... Mówię tu głównie o poziomie projektowania na białej tablicy. Warto jednak zejść do poziomu kodu, ponieważ możesz zdać sobie sprawę, że wiele rozwiązań projektowych ma wady, które znacznie utrudniają ich wyrażenie.
Macneil,

1

Słyszałem o takich rzeczach zwanych „programowaniem katas”. Kata to termin sztuk walki określający formę lub sekwencję ruchów, praktykowaną w kółko do perfekcji. Poszukaj katas w swoim wybranym języku, a założę się, że coś znajdziesz. :)


1

Zgadzam się, że Katas i Euler są mili w projektowaniu algorytmów i ćwiczeniu kodowania - być może możesz je rozwinąć, być trochę kreatywnym i zaprojektować system wokół jednego z problemów.

Na przykład pracuję nad nie tylko rozwiązywaniem problemów Eulera, aby znaleźć najszybszą i najkrótszą odpowiedź, ale rozwiązywaniem ich w sposób rozproszony - chcę skonfigurować serię węzłów Erlang, aby rozwiązać jeden z problemów. Oczywiście oznacza to, że muszę wymyślić, jak rozdzielić problem na odrębne fragmenty i poprosić, aby zdali raport z postępów i zebrali wyniki razem (wszystko w Funkcjonalnym Języku, w którym nie jestem ekspertem).

Być może możesz zaprojektować system wokół jednego z tych problemów jako rozwiązanie biznesowe - jak to zrobić, aby wielu „klientów” mogło mieć dostęp do Twojego problemu naraz, możesz przejść przez projektowanie interakcji klienta i warstwy usług itp.

Chodzi o kreatywność i dobrą zabawę.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.