- 42
- 22 549
orbisbit
เข้าร่วมเมื่อ 1 ก.พ. 2014
Subiektywnie o tym, jak byłoby gdyby świat IT był idealny. Jeśli jesteś programistą lub planujesz nim zostać, to ten kanał jest właśnie dla Ciebie. Każdy nowy film o wzorcach, architekturze i dobrych praktykach to dawka nietuzinkowego know-how.
TEST DRIVEN DEVELOPMENT [TDD]
TEST DRIVEN DEVELOPMENT - TDD
W dzisiejszym filmie poruszymy zagadnienie, które początkującym programistom wydaje się dosyć abstrakcyjne i bezsensowne. Mowa tutaj o TDD czyli sposobie na tworzenie oprogramowania, które zorientowane jest w pierwszej kolejności na utworzeniu testu pod przyszłą funkcjonalność.
Wersja do przeczytania: blog.orbisbit.com/wpisy/tdd-test-driven-development/
W dzisiejszym filmie poruszymy zagadnienie, które początkującym programistom wydaje się dosyć abstrakcyjne i bezsensowne. Mowa tutaj o TDD czyli sposobie na tworzenie oprogramowania, które zorientowane jest w pierwszej kolejności na utworzeniu testu pod przyszłą funkcjonalność.
Wersja do przeczytania: blog.orbisbit.com/wpisy/tdd-test-driven-development/
มุมมอง: 120
วีดีโอ
Znasz wzorzec AAA? W NIESPEŁNA 3 MINUTY POZNASZ!
มุมมอง 256หลายเดือนก่อน
Czy słyszałeś/słyszałaś kiedyś o Arrange, Act, Assert? W dzisiejszym filmie powiem Ci co to jest, do czego służy i dlaczego warto używać tego podejścia do pisania testów. Dowiesz się jak pisać czytelne i poprawnie poukładane testy, dzięki wspomnianemu wzorcowi AAA. Wersja do przeczytania: blog.orbisbit.com/wpisy/czytelne-testy-z-aaa-arrange-act-assert/
MOCK jest zły...
มุมมอง 1302 หลายเดือนก่อน
Dublery w testach (test doubles): atrapa, zaślepka, podróbka, szpieg, imitacja Wszyscy ich używamy, ale czy wiesz czym różni się mock od spy, a dummy od fake’a i co to jest stub? Jeśli nie, to ten wpis jest właśnie dla Ciebie. Po obejrzeniu tego filmu przestaniesz nazywać wszystko mock-iem i wprowadzisz dozę poprawnego nazewnictwa do swoich dublerów w testach. Wersja do przeczytania: blog.orbis...
PISZEMY TESTY: UNIT-Y, INTEGRACYJNE, E2E
มุมมอง 2407 หลายเดือนก่อน
Test jednostkowy, integracyjny i e2e w praktyce Czym różnią się od siebie podstawowe rodzaje testów i kiedy po który sięgnąć? Sprawdź w jakich sytuacjach warto napisać test jednostkowy, integracyjny, komponentowy czy e2e - bo odpowiednio napisany test, to oszczędność czasu i pieniędzy. Wersja do przeczytania: blog.orbisbit.com/wpisy/test-jednostkowy-integracyjny-i-e2e-w-praktyce/
Czy dużo UNIT-ów w systemie to dobrze?
มุมมอง 1839 หลายเดือนก่อน
PIRAMIDA TESTÓW, jaki test napisać? - Test jednostkowy (unit) - Test integracyjny - Test end to end (e2e) Z uwagi na koszt napisania i utrzymania testów w systemie, powstało zagadnienie: piramida testów, które standaryzuje to, ile, jakich testów powinniśmy pisać. Testy jednostkowe, integracyjne oraz e2e powinny być dobierane w sposób przemyślany. Sprawdź, jak to robić, aby zoptymalizować koszty...
HATEOAS - klucz do posiadania REST API
มุมมอง 59410 หลายเดือนก่อน
REST vs. API Dzisiaj, opowiem o tym, czym jest HATEOAS oraz dlaczego standard HAL (Hypertext Application Language) powinien być implementowany w każdym API dla protokołu HTTP. Jeżeli nie wiesz czym HATEOS jest, to koniecznie sprawdź ten artykuł, aby budować prawdziwe RESTful API. Wersja do przeczytania: blog.orbisbit.com/wpisy/hateoas-klucz-do-posiadania-rest-api/
W CQRS nie chodzi o Command Bus-a!
มุมมอง 49311 หลายเดือนก่อน
Command Query Responsibility Segregation czyli CQRS. Jest to wzorzec projektowy, który rozdziela zadania odczytu i zapisu do osobnych modeli. Sprawdź ten wpis, aby dowiedzieć się kiedy i jak z niego skorzystać. Wersja do przeczytania: blog.orbisbit.com/wpisy/cqrs-command-query-responsibility-segregation/
CLEAN CODE?! A na co to komu...
มุมมอง 244ปีที่แล้ว
Zasady Clean Code - Czysty kod. Clean code, to pojęcie określające kod napisany w taki sposób, że osoba, która go przejmuje jest go w stanie bezproblemowo zrozumieć, zmodyfikować czy dopisać nową funkcjonalność. W tym filmie dowiesz się, co w praktyce oznacza pisanie czystego kodu oraz jak łatwo czysty kod wytwarzać. Koncepcje omawiane w filmie: th-cam.com/play/PLyvL2oyR1rpd7S5O7dro2sSqzzCVEDEY...
Zasady GRASP, znowu ten clean code...
มุมมอง 1.1Kปีที่แล้ว
GRASP, czyli dziewięć zasad clean code, których stosowanie pozwoli Ci na wejście na wyższy poziom ze swoim kodem. Pewnie większość z Was słyszała o zasadach SOLID. Są one bardzo rozpowszechnione i dosyć często stosowane (i dobrze), ale czy słyszeliście o GRASP? General Responsibility Assignment Software Patterns - to kolejna dawka zasad czystego kodu do zapamiętania. Wersja do przeczytania: blo...
Czy Twój kod ŚMIERDZI?!
มุมมอง 179ปีที่แล้ว
Code smells - zapachy kodu Czy zastanawiałeś/aś się jaki zapach ma Twój kod? Przyjemny, z nutą świeżo mielonej kawy i skoszonego o poranku trawnika? A może wyczujesz zapach pleśni czy nieświeżości? Dzisiaj dowiesz się, jak ten zapach sprawdzić i co zrobić jeśli jest brzydki. Wersja do przeczytania: blog.orbisbit.com/wpisy/zapachy-kodu-code-smells/
Dlaczego komentowanie kodu jest ZŁE?
มุมมอง 385ปีที่แล้ว
Komentarze w kodzie Dodajesz komentarze w swoim kodzie? Prawdopodobnie zwiększasz przez to jego skomplikowanie, a także obniżasz czytelność. W tym filmie dowiesz się, kiedy naprawdę warto dodać komentarz, a kiedy jest on jedynie problemem i powoduje więcej konsekwencji. Wersja do przeczytania: blog.orbisbit.com/wpisy/komentowanie-kodu/
ZASADA Clean Code podnosząca kulturę pracy w projekcie IT
มุมมอง 345ปีที่แล้ว
Zasada skauta w programowaniu. Zastanawialiście się czy w programowaniu mamy coś podobnego do Savoir-vivre? Okazuje się, że tak! Idealną kandydatką do miana jednej z zasad, może być znana w harcerstwie reguła skauta. Przenieśmy ją do kodu, jako jedną z zasad dobrych manier. Wersja do przeczytania: blog.orbisbit.com/wpisy/zasada-skauta-scout-rule/
TWORZYSZ METODY TYPU GET? SPRAWDŹ DLACZEGO TO BŁĄD
มุมมอง 242ปีที่แล้ว
Zasada Clean Code: TDA - Tell don't ask. Dzisiaj na tapet weźmiemy TDA, czyli: Tell, don’t ask, kolejną regułę clean code. Zasada ta mówi nam o tym, abyśmy zlecali zadania, zamiast pytać obiekt o dane, a następnie nimi manipulować. Sprawdź ten film, jeśli chcesz pisać czytelniejszy kod. Wersja do przeczytania: blog.orbisbit.com/wpisy/tda-tell-dont-ask/
DUPLIKACJE KODU? DRY JEST LEKARSTWEM
มุมมอง 125ปีที่แล้ว
Reguła clean code: Do not repeat yourself! Zasada DRY, to po przełożeniu na język polski: nie powtarzaj się. Brzmi bardzo banalnie, jednak dosyć często okazuje się, że mamy problem z jej stosowaniem w kodzie. Dziś dowiesz się, jak nie łamać tej reguły, a co za tym idzie nie powtarzać się. Wersja do przeczytania: blog.orbisbit.com/wpisy/dry-dont-repeat-yourself
POPRAW SWOJE IF-y w KODZIE! [3 KROKI]
มุมมอง 190ปีที่แล้ว
Instrukcje warunkowe mogą powodować, że Twój kod nigdy nie będzie clean! Dzisiaj przedstawię Ci najczęstsze błędy związane z używaniem instrukcji warunkowych: if, else-if oraz else. Możesz się zdziwić, ale prawdopodobnie, po obejrzeniu tego filmu będziesz w stanie poprawić czytelność i zmniejszyć złożoność swojego kodu. Wersja do przeczytania: blog.orbisbit.com/wpisy/czeste-bledy-zwiazane-z-if-...
DOSTARCZAJ tylko to, co konieczne. TO MOŻLIWE!
มุมมอง 106ปีที่แล้ว
DOSTARCZAJ tylko to, co konieczne. TO MOŻLIWE!
KOD MUSI BYĆ PROSTY! [CLEAN CODE - KISS]
มุมมอง 260ปีที่แล้ว
KOD MUSI BYĆ PROSTY! [CLEAN CODE - KISS]
NAJPOTRZEBNIEJSZE wzorce projektowe [W 3 MINUTY]
มุมมอง 2.2Kปีที่แล้ว
NAJPOTRZEBNIEJSZE wzorce projektowe [W 3 MINUTY]
Wzorzec strategia [MUST HAVE każdego programisty]
มุมมอง 1.3K2 ปีที่แล้ว
Wzorzec strategia [MUST HAVE każdego programisty]
Wzorzec projektowy fabryka [w 3 minuty]
มุมมอง 3.8K2 ปีที่แล้ว
Wzorzec projektowy fabryka [w 3 minuty]
Monolity, mikroserwisy, architektura hexagonalna
มุมมอง 7242 ปีที่แล้ว
Monolity, mikroserwisy, architektura hexagonalna
Command-Query Separation [CZYSTY KOD w 4 minuty]
มุมมอง 1452 ปีที่แล้ว
Command-Query Separation [CZYSTY KOD w 4 minuty]
Kompozycja zamiast dziedziczenia (composition over inheritance)
มุมมอง 6832 ปีที่แล้ว
Kompozycja zamiast dziedziczenia (composition over inheritance)
Dla początkujących jak znalazł, bo trochę krótko i wybiórczo to wyjaśniłeś. Szkoda, że przy teście z ID nie wygenerowałeś najpierw samego id (bez całej logiki) - test by przeszedł, bo id zostało zwrócone, ale rekordu by nie było ;). Czekam na kolejne filmy, fajnie się ten kanał rozwija. Powodzenia!
Dzięki!
Obie są złe ponieważ konstruktor przyjmuje paramerty w odwrotnej kolejności niż podajesz w wywołaniu :)
Jak się diabeł spieszy to się człowiek cieszy. Dzięki! Poprawię na czasie
@@orbisbit Bardzo przyjazne materiały, jeden z fajniejszych wstępniaków w meandry współczesnego programowania jakie ostatnio odkopałem 🦾
Jasno wytłumaczone. Dzięki. Taki krótki format ma potencjał
Wszystko zależy od tematu, jeśli jest szerszy, to i film musi być dłuższy. Dzięki za komentarz!
czy jest jakaś różnica między AAA, a given when then?
AAA jest bardziej techniczne, przy jego pomocy programista określa sobie, jak będzie wyglądała jego metoda testowa. Given-When-Then, to styl testów behawioralnych (znany np. z podejścia BDD), który opisuje kontekst, zdarzenie i oczekiwane zachowanie w bardziej narracyjny sposób. Lepiej nadaje się do współpracy z biznesem. Bardzo często PO/PM definiują wymagania funkcjonalne w opisie task-a korzystając z szablonu GWT. Wtedy Twój test powinien wyglądać tak samo. Jeżeli natomiast spłycić GWT tylko do strony technicznej, do kodu, to powstanie nam AAA właśnie. I w takiej sytuacji to już bez znaczenia, jak ponazywasz sobie konkretne sekcje. Temat GWT poruszę przy okazji wątku BDD w (nie)dalekiej przyszłości!
Z całym szacunkiem myślę, że to po prostu wymyślenie nowej nazwy dla istniejącej od dawna konwencji GWT. Upraszczajmy sobie życie w tym złożonym świecie komputerów.
W istocie, AAA jest spłaszczonym GWT - sama struktura testu, bez otoczki BDD
Poco wprowadzać obiekt Result który zawiera pole "error' zamiast rzucać wyjątki?
Wyobraź sobie, że Twoja klasa serwisowa używana jest zarówno w kontrolerze REST API, jaki i kontrolerze dla WebSockets. Jeśli wyrzucisz w serwisie wyjątek typu NotFoundHttpException, to będziesz musiał go odpowiednio wyłapać w kontrolerze WS. Oczywiście, możesz wyrzucić generyczny błąd NotFound, a następnie wprowadzić globalny interceptor i w zależności od typu zapytania/błędu zrobić re throw z już właściwym dla kontekstu. Ja osobiście wolę Result, a decyzję o tym co wyrzucić na jego podstawie zostawić klasie kontrolującej
@@orbisbit ok, ale rozumiem że to jest niszowe zastosowanie a zwykle zalecane jest typowe rzucanie wyjątków - ?
@@gbkEmilgbk Raczej powiedziałbym, że w kodzie zorientowanym bardziej domenowo, to podejście zwracania krotki (np. w postaci klasy Result) jest bardziej popularne
@@orbisbit może to byłby dobry temat na odcinek - jak rzucać/obsługiwać błędy i wyjatki w DDD czy inych Clean-code-ach... - dobre praktyki - ?
Przykład encji rich: vektor3D - który pozwala na wykonanie na nim szeregu operacji matematycznych
2:04 uwaga techniczna: freePlan = new VoiceMeetingPlan() podobnie jak i silverPlan goldPlan itd... wywalą się ponieważ do konstruktora nie podano im wymaganego argumentu (można to jakoś naprawić dodając domyślną wartość dla "plan" w konstruktorze PlanDetailsDecorator (czyli taki "zerowy" dekorator który zwraca biling=0, fetures=[], name='"")
Nie tylko w grach to się sprawdza - ale np. w edytorach w których użytkownik włącza jakiś stan np. "selekcji elemntów", "tworzenia nowego", "usuwania" itp itd.
Oczywiście. Tytuł miał być bait-owy, ale nie wyszło
ładnie wyjaśnione
nice
1:25 Ogólnie spoko filmik niemniej: "Dobrze napisany kod nie wymaga żadnego komentarza" - jest to nieprawda. Jest wiele przykładów gdzie komentarz jest konieczny gdyż kod tylko z pozoru prosto wygląda np. jest związany z pewnymi obliczeniami matematycznymi które mają tak zwięzłą formę że nie sposób zrozumieć "co tu jest robione" i "dlaczego to działa" bez dodatkowego komentarza (a czasem za danym niepozornym fragmentem kodu może stać wręcz cała praca doktorska). Np. Algorytm "Shoelace formula" obliczania pola wielokąta na podstawie wierzchołków - implementacja jest banalnie prosta ale kompletnie nie wiadomo dlaczego to w ogóle działa... Czasami komentarz też jest potrzebny gdy używamy jakąś zewnętrzną bibliotekę i ustawiamy jej pewne takie a nie inne parametry (co wymaga wyjaśnienia). Inny przykład, mamy np. string "Lorem ipsum..." i musimy go podzielić na tablicę wyrazów według regół (dobór danej reguły wynika z kontekstu i tego jakie wyrazy znajdują się przed aktualnie przetwarzanym wyrazem): A: Tree words <6 letters B: Two words <6 letters if next word >6 letters C: One word >=6 letters if next word >=6 letters D: Two words: first >=6, second <6 letters E: Two words: firs<6, second >=6 letters Przykładowe użycie tych regół dla lorem-ipsum (wybieramy zawsze pierwszą od góry regółę którą da się zastoować): [ "Lorem ipsum dolor", // rule A "sit amet", // rule B "consectetur", // rule C "adipiscing elit", // rule D "sed doeiusmod", // rule E "tempor" // rule C "incididunt ut" // rule D "Duis aute irure" // rule A "dolor in" // rule B "reprehenderit in" // rule D "esse cillum" // rule E "dolor eu fugia" // rule D ... ] Życzę powodzenia w pisaniu samo-dokumentującego się kodu dla tego przykładu (czyli kodu w którym jak ktoś na niego spojrzy to bez dodatkowego komentarza będzie rozmiał oco chodzi i co tu jest robione).
3:20 z majstrowaniem przy 'if-ach' radzę uważać - ta zasada jest ok, ale tylko jeśli zmieniany kod jest objęty testami jednostkowymi. Ale ogólnie spoko :)
Obecnie w typescript jest trend aby korzystać z interfejsów albo typów, zwłaszcza przy odczycie danych z API. Czy nie lepiej jest tworzyć serwis (fasadę) operującą na danych z API zamiast wbudowywać metody do obiektu z api? I co z metodami "statystycznymi" które np. na wejściu oczekują tablicy danych obiektów i zwracają jakąś liczbę (statystykę) - gdzie umieścić te metody? Przykład: api zwraca obiekt "samochód" z polami "kolor", "rok_produkcji", "id", "pojemność", "data_ostatniej_sprzedaży", "cena_netto". I pytanie czy taki obiekt z zwieloma polami (co jest typową sytuacją) ma zawierać w sobie metody "przemalujKolor(...)", i metodę "obliczCenęBrutto(..)" w osbie - mimo że te metody nie mają ze sobą nic wspólnego. Czy może lepiej aby modół odpowiedizalny za wygląd samochodu mógł przrobić kolor, a osobny modół odpowiedzialny za generowanie faktór mógł obliczyć cenęBrutto ?
Bardzo dobra rada. A co z komentarzami? (tzn. ktoś zostawia zakomentowadą metodę która była potrzebna w trakcie budowy jakiegoś modułu, ale po ukończeniu modułu okazała się zbędna (bo okazało się że dało się uprościć moduł w trakcie prac) - ale metoda sama w sobie jest w jakiś sposób wartościowa i może się przydać w przyszlości a na jej napisanie przeznaczono sporo czasu)
Claud Crest
Dobrze, ale nadal to nic nie tłumaczy. Czym się różnią w praktyce? Podaj przykład z życia.
dobre materiały, nie spodziewałem się takich na tak małym kanale
Dzięki temu filmowi dowiedziałem się, że api w mojej firmie to level 0. Jak podczas wdrożenia zwróciłem uwagę, na błędy przy jego projektowaniu, to zostałem zbyty informacją, że tak ma być. :)
Może w założeniu to API nie miało być RESTful? Nie każde API musi być RESTful.
@@XAUTORI wydaje mi się, że mierzyli w restful właśnie :) Skoro autor wspomina, że do level 0 należą api m.in api soapowe, to chyba ta skala nie dotyczy jedynie restful?
@@elgoogssie3969 ta skala opisuje jak bardzo dane API jest zbliżone do RESTful. Naturalnie, API, które w założeniu takie nie próbuje być, będzie gdzieś w okolicach level 0, ale to nie znaczy, że to API jest złe. Po prostu nie jest RESTful :) Jeżeli u ciebie celowali w RESTful, a wyszło im level 0 to chyba zapomnieli przeczytać czym jest RESTful :D Niektórzy mówiąc API REST, z powodu nieznajomości terminów, mają na myśli po prostu bliżej nieokreślone API po HTTP.
świetny film, zwięzły i na temat, ale muzyka czasami troche za głośna
Dzięki, popracuję nad tym.
4:5 0 a niby dlaczego? te filmiki są o niczym takie zapchaj dziur dla oglądalności click bajty
Serdecznie dziękuję, że wyraziłeś swoje zdanie. Jeżeli uważasz, że materiały nie niosą żadnej wartości dodanej dla Ciebie, to jest mi z tego powodu bardzo przykro. Z tego też faktu, w kolejnych materiałach, postaram się sprostać Twoim oczekiwaniom. Co do odnośnika czasu 4:50, nie do końca wiem co masz na myśli. Jeśli pytasz dlaczego wymienione przeze mnie przykłady spełniają Prawo Demeter, to już spieszę z wytłumaczeniem: ponieważ operują na tym samym, bazowym, typie - mamy tutaj do czynienia z fluent interface. Co do "click bait-u", miniaturka odpowiada treści przedstawionej w filmie, tak samo jak tytuł. Czy jest więc click bait-em?
zrób filmiki na 2 minut podaj pare haseł bez głębszej analizy nikt nic z tego nie zapamięta i nie rozumie i będziesz nabijać oglądalność@@orbisbit
@@maciej12345678 Dziękuję za radę, wezmę Twoją sugestię pod uwagę.
dla mnie jest akurat zrozumiałe 4:50 - jeżeli metoda A.ma() zwraca jakieś obiekty klasy B to unikamy wywołań metod z B. Ale jeżeli A.ma() zwraca obiekt klasy A (czyli tej samej) to możemy wywołać tą metodę i robić to łańcuchowo bo w każdym kroku (po każdej kropce) zawsze będziemy mieli do czynienia z metodami klasy A (czyli najbliższego otoczenia/sąsiada)
@@orbisbit jeżeli ktoś Ci zarzuca że filmiki są o niczym i robisz je tylko by nabijać sobie oglądalność - to należy to odczytywać następująco: "ta osoba gdyby robiła filmiki to o niczym i tylko poto by nabijać sobie oglądalność" - innymi słowy Maciej opisał tylko swoje własne nastawienie i motywacje. Orbisbit - twoje filmik niosą akurat dużą wartość (bo są zwięzłe i treściwe) więc tymbardzije stanowi do kontrast i pokazuje że Maciej nie mówił o Tobie, a o sobie. Pozdrawiam.
3:57 takie gadanie
takie komentowanie
złoto! :)
Fajne!
Podoba mi się 😊
dzięki, czytam właśnie "Czysty kod" i mnie zastanawiało to pojęcie
Ten film trzeba by rozesłać wszystkim wykładowcom na uczelniach wyższych. Osobiście komentarzy używam tylko przy pisaniu bibliotek do JavaDoc. Jedyne kiedy pisałem gdzieś jakieś komentarze w kodzie aplikacji to studia z wiadomego powodu.
well done 👌
Jak dobrze, że trafiłem na ten kanał ❤
Przykład z nazwą klasy trochę nietrafiony. IDE od jetbrainsów jak i VS/VS Code posiadają opcję "Refactor", która zmienia nazwę klasy we wszystkich miejscach w projekcie. Pozatym mega fajnie wytłumaczone, subuję i czekam na więcej!
Właśnie tak, ale pierw trzeba mieć taki edytor 😜
Tak, oczywiście, ale bardziej miałem tutaj na myśli ilość zmian (30 miejsc), która zostanie wygenerowana, już bez wnikania w jaki sposób.
wszystko ok, ale to sprawdzenie może do czegoś było potrzebne, pewnie nie w tej klasie ale raczej to trzeba przenieść do innej klasy a nie usunąć całkowicie ;)
Hej, dzięki za komentarz! Przeanalizuj proszę logikę metody add w pierwotnej wersji. Sprawdzanie na tym poziomie czy waluta jest dozwolona jest całkowicie zbędne. Taki filtr byłby fajny do wrzucenia przed utworzeniem obiektu Money, ale tego w pierwotnym kodzie nie było, just keep it simple 😊
Świetny kanał! :D
Facet czapki z głów za Twoje materiały... Seria o wzorcach projektowych to coś pięknego! Jak będzie mnie ktoś pytał w tym tematach od razu wyślę do Ciebie pod filmik. :D
Po singletonie wyłączyłem
Niech pierwszy rzuci kamieniem ten, kto nie był chociaż raz zmuszony do zaimplementowania singletona. Wady i alternatywy dla tego wzorca omówiłem w osobnym filmie, jednak chcąc nie chcąc jest on popularny i niestety szeroko używany
Ależ odkrycie! Cudne materiały. Miło przypomnieć sobie fascynację z przeszłości :) Dziekuję.
Wow!
bardzo fajne wideo, przyzwoita dawka wiedzy przy śniadaniu, dzięki ;-)
Jestem przeciwnikiem myslenia "tutaj bedzie pasowal ten wzorzec". Jedyny sensowny wzorzec projektowy to jak najwieksza reuzywalnosc kodu. Cala reszta jest poklosiem takiego myslenia.
Dokładnie po to powstały wzorce projektowe, aby m. in. zrobić nasz kod bardziej reużywalnym. Nikt nie mówi, aby uczyć się na pamięć kiedy wzorzec pasuje. Natomiast znając wzorzec i to, jaki problem może rozwiązać, pomoże nam napisać kod, który będzie łatwy w rozwoju i możliwy do ponownego użycia. Podany przeze mnie przykład jest jedynie przykładem, gdzie użycie danego patternu ma jakiś sens - nie lubię suchej teorii. Dzięki za komentarz!
Super seria
Really great content
can u plz enable at least subtitles auto translation
Unfortunately, automatic captions are not yet available for my language
@@orbisbit oh i see. to bad i like the topic it seems to be summerized and well presented .i wish i understood what u were saying or there was an English version.
@@najibrachid If there are more people like you, I will consider the English version of the movies in the future. In the meantime, you can check the link in the video description and just translate its content using google translator. The content of the article is almost the same as here. Thank you for your feedback!
@@orbisbit thank you .sure u can try some video in English and see if they will reach a wider audience