Witam. Mam pytanie (myślę, że w odpowiednim dziale) dla doświadczonych programistów, tzn. pracujących w zawodzie.
Jak bardzo przydaję się znajomość wzorców projektowych ? Tzn. Czy napotykając na jakiś problem, macie już w głowie " ta klasa powinna być [np. singletona] " ?
Bardzo się przydaje. Ale nie chodzi o znajomość nazwy tylko o to jak ten wzorzec (lub anty-wzorzec) wygląda.
Z tym że jest kilka rodzajów wzorców:
- książkowe podstawowe (np. z GoF)
- praktyczne nazwane (np. DAO, Service lub Stateless Session Bean w Java, polityka w C++)
- praktyczne nienazwane (np. szablon JDBC w Spring - to klasa ale również wzorzec do zastosowania)
Bardzo, ale rzadko w taki sposób jak opisałeś. Po prostu mając pewien problem wiesz jak go ugryźć, bo jest podobny do czegoś co rozwiązuje jakiś wzorzec. W efekcie "samo się robi".
Znajomość wzorców to nie jest "power up" tylko "must have".
jak dla mnie na wiele wzorców się wpada samoistnie programujac albo podpatrujac cudze kody. Dlatego nawet nie jest to must have, ale raczej normalna konsekwencja, ze sie ma jakies doswiadczenie w programowaniu. Oczywiscie, nie na wszystko sie wpadnie samemu i teoria tez sie przydaje.
Ale tez nie nalezy wpadac wg mnie w pulapke nauki wzorcow tylko z ksiazek. Bo to czy dana klasa powinna byc jakas/siakas, i jaki wzorzec nalezaloby zastosowac nie powinno wynikac z tego ze wyczytales o tym w ksiazce, tylko raczej z twojego doswiadczenia. (jest tez tak, ze kazdy wzorzec ma swoje zalety i wady i zaden wzorzec nie jest zlotym srodkiem, czy powiekszajacym grzybkiem z Mario. Bardziej jak mlotek, srubokret. Mlotek jest dobry do gwozdzi,cale juz srub nim nie wkrecisz i vice versa. Tylko o tym, ktore narzedzia sa jakie sie przekonujesz programujac i probujac rozne rzeczy.
Ja mam czesto tak, ze jak czytam o ciekawym wzorcu, ktorego nie znalem, to potem sie nim jaram i staram wykorzystywac w roznych miejscach, wszedzie praktycznie, Potem dopiero odkrywam, ze nie wszedzie dsny wzorzec sie nadaje, i poznaje (eksperymentalnie) jego ograniczenia albo trudnosci. Dopiero wtedy, jak przetestuje iles wzorcow w podobnych sytuacjach, to jestem w stanie stwierdzic "tutaj pasowalby wzorzec X". Inaczej to by byly czyste spekulacje...
A to ja podepnę się pod pytanie: możecie polecić jakąś literaturę w tej tematyce ? Ew. jakieś sprawdzone materiały w sieci.
Generalnie wzorce projektowe to teoria. Jednak doświadczony programista intuicyjnie tworzy kod mniej lub bardziej zgodny z powszechnie znanymi wzorcami projektowymi (np. pula obiektow, strategia, metoda fabryczna jako lepsza alternatywa dla konstruktora).
hipekk napisał(a):
A to ja podepnę się pod pytanie: możecie polecić jakąś literaturę w tej tematyce ? Ew. jakieś sprawdzone materiały w sieci.
Wg dobra książka to http://helion.pl/ksiazki/wzorce-projektowe-rusz-glowa-elisabeth-freeman-eric-freeman-bert-bates-kathy,wzorrg.htm
Do podstawowych wzorców jest tylko jedna słuszna książka:
http://helion.pl/ksiazki/wzorce-projektowe-elementy-oprogramowania-obiektowego-wielokrotnego-uzytku-erich-gamma-richard-helm-ralph-johnson-john-m,wzoele.htm