Project manager

Zasady programowania: TDA, czyli Tell Don't Ask

TDA, czyli Tell Don't Ask, to zasada programowania promująca tworzenie przejrzystych, niezawodnych systemów poprzez skupienie na informowaniu obiektów o wykonaniu pewnych działań, zamiast pytać je o dane i decydować za nie. Zrozumienie tej zasady oraz uświadomienie sobie, kiedy mówić, a kiedy pytać, może znacznie ułatwić pracę programistom. Pozwólmy na chwilę zanurzyć się w ten nieoczywisty, lecz fascynujący temat.

17 lip 2023

Zarówno dla początkujących, jak i doświadczonych programistów, podejście do projektowania systemów oparte na TDA (Tell, Don't Ask) okazuje się niezwykle użyteczne. TDA polega na zasadzie programowania, która stanowi, że powinniśmy mówić obiektom, co mają robić, zamiast pytać o ich stan i podejmować decyzje za nie. W praktyce oznacza to tworzenie kodu, który jest bardziej zrozumiały, modularny i łatwiejszy w utrzymaniu.

 

Podstawy TDA: Różnica między mówieniem a pytaniem

Podstawą programowania w sposób TDA (Tell, Don't Ask) jest zasada, która zaleca 'mówić, co robić', zamiast 'pytać o stan, a potem podejmować decyzje'. W praktyce oznacza to, że powinniśmy dążyć do sytuacji, w której nasze metody wykonują niezbędne zadania, zamiast interaktywnie odpytywać o stan obiektu. Jest to podstawowa filozofia prowadząca do tworzenia bardziej hermetyzowanych, niezależnych i minimalistycznych elementów kodu. Dzięki niej tworzone systemy są dużo bardziej zrozumiałe, łatwe w utrzymaniu, jak również bardziej odporne na błędy. Takie podejście jest szczególnie użyteczne w programowaniu obiektowym, lecz stosowany może być z powodzeniem również w innych paradygmatach.

 

Przykłady użycia mówienia i pytania w TDA

W TDA, kluczowym jest polecenie klasie lub obiektowi, jakie ma wykonywać czynności, a nie pytanie go o dane i podejmowanie decyzji na ich podstawie. Na przykład, zamiast pytać obiekt 'maszyna do kawy' o status zasobów (np. woda, kawa) i następnie podejmować decyzje w zależności od tych informacji, lepiej jest po prostu powiedzieć 'zrób kawę' i pozwolić maszynie zająć się szczegółami. Innym przykładem może być pytanie obiektu 'konto bankowe' o saldo, a następnie zlecanie przelewu. Zamiast tego, osoba korzystająca z TDA powie 'zrób przelew', a konto samo zadecyduje, czy jest to możliwe. W ten sposób oddzielamy logikę od danych, co zgodne jest z teorią ukrywania danych, jednym z fundamentalnych zasad programowania obiektowego.

programistka, TDA

Powiązana branża

Finanse / FinTech

W branży finansowej liczy się nie tylko to, czy system działa. Równie ważne są bezpieczeństwo danych, niezawodność, przejrzystość procesów i wygoda użytkownika. Projektujemy aplikacje i systemy finansowe tak, aby ograniczać zbędne kroki, ułatwiać podejmowanie decyzji i prowadzić użytkownika przez cały proces — od pierwszego kontaktu po złożenie wniosku, płatność czy obsługę dokumentów. Wniosek finansowy to ścieżka zaufania Klient porzuca wniosek nie dlatego, że jest długi, tylko dlatego, że w połowie przestaje rozumieć, po co podaje kolejne dane i co się z nimi stanie. Projektowanie takich ścieżek to tłumaczenie się z każdego pola: co jest obowiązkowe i dlaczego, co można dociągnąć z rejestrów zamiast pytać, gdzie pokazać człowieka, z którym można dokończyć rozmowę. W restrukturyzacji i usługach okołofinansowych mechanika jest ta sama, tylko stawka wyższa: klient przychodzi w trudnej sytuacji i chce wstępnej odpowiedzi, zanim poda swoje dane. Kalkulator albo krótki formularz kwalifikujący daje mu tę odpowiedź od razu, a Wam odsiewa sprawy spoza zakresu. Audytowalność, uprawnienia i utrzymanie W produkcie finansowym musi dać się odtworzyć, kto, kiedy i co zmienił — w danych klienta, w statusie wniosku, w rozliczeniu. Dziennik zdarzeń uruchamiamy razem z pierwszą wersją systemu. Osobno ustalamy uprawnienia: kto widzi dane klienta, kto może je zmienić i co po tej zmianie zostaje w logu. Druga sprawa to utrzymanie. Monitoring, alerty i procedurę reagowania ustawiamy razem z wdrożeniem, a zmiany wypuszczamy tak, żeby dało się je wycofać w kilka minut. Bezpieczeństwo aplikacji prowadzimy jako część zakresu, nie jako etap na końcu.

fintech, mężczyzna płacący w internecie

Dobre praktyki i strategie dla TDA

Programowanie oparte na interakcjach TDA wymaga zastosowania odpowiednich strategii i dobrych praktyk. Pierwszą zasadą jest minimalizowanie interakcji między obiektami, co pozwala na utrzymanie enkapsulacji i ograniczenie odpowiedzialności do pojedynczej klasy. Zasada ta prowadzi do tworzenia bardziej niezawodnych i skalowalnych systemów. Drugą zasadą jest unikanie pytających się metod. W zamian, powinniśmy mówić obiektom, co mają zrobić poprzez wywołanie odpowiednich metod. Ta proaktywna strategia przekształca pasywne dane w aktywne obiekty, które wykonują określoną pracę. Kolejnym krokiem jest stworzenie dobrze zdefiniowanych interfejsów, które jasno określają, co obiekt moze zrobić, bez ujawniania, jak to robi. W praktyce oznacza to zastosowanie wzorców projektowych, które promują zasady TDA. Wszystko to umożliwia lepszą kontrolę nad kompleksowymi systemami i stanowi solidne podstawy dla efektywnego programowania.

 

TDA - kiedy i jak skutecznie zastosować ta metode

TDA, to zasada programowania, która polega na zachęcaniu obiektów do wykonywania działań zamiast zapytywania o ich stan. Metodę tę należy stosować tam, gdzie jest to skuteczne i logiczne - najlepiej w tych miejscach, gdzie można ją łatwo zintegrować z innymi zasadami projektowania i praktykami programistycznymi. Przykładowo, TDA doskonale harmonizuje z zasadami SOLID, szczególnie z zasadą pojedynczej odpowiedzialności (SRP), która mówi, że klasa lub moduł powinien być odpowiedzialny za jedną, a tylko jedną rzecz. A więc, zamiast pytać obiekt o jego stan i na tej podstawie podejmować decyzje, warto pozwolić obiektowi samemu podjąć decyzje i podjąć właściwe działania. Zakładając, że obiekt jest odpowiednio zaprojektowany i dobrze wie, co ma robić - uczynienie go 'ekspertem' w swojej dziedzinie jest bardziej efektywne i zgodne z zasadami obiektowości. Właściwe zastosowanie metody TDA prowadzi do kodu, który jest bardziej zrozumiały, łatwiejszy w utrzymaniu i testowaniu.

FAQ

Najczęstsze pytania

  • To zasada programowania mówiąca, że powinniśmy mówić obiektom, co mają robić, zamiast pytać o ich stan i podejmować decyzje za nie. Prowadzi to do kodu bardziej zrozumiałego, modularnego i łatwiejszego w utrzymaniu.
  • Zamiast pytać obiekt „maszyna do kawy” o status zasobów i decydować na tej podstawie, lepiej powiedzieć „zrób kawę” i pozwolić maszynie zająć się szczegółami. Podobnie zamiast pytać konto bankowe o saldo przed przelewem — mówimy „zrób przelew”, a konto samo decyduje, czy to możliwe.
  • Minimalizowanie interakcji między obiektami dla zachowania enkapsulacji, unikanie „pytających” metod na rzecz wywołań wykonujących pracę oraz dobrze zdefiniowane interfejsy określające, co obiekt może zrobić — bez ujawniania, jak to robi.
  • Szczególnie dobrze z zasadą pojedynczej odpowiedzialności (SRP) — obiekt odpowiedzialny za jedną rzecz staje się „ekspertem” w swojej dziedzinie i sam podejmuje właściwe działania, co jest bardziej efektywne i zgodne z zasadami obiektowości.
  • Bardziej hermetyzowane, niezależne i minimalistyczne elementy kodu — systemy stają się zrozumiałe, łatwe w utrzymaniu i testowaniu oraz odporniejsze na błędy. Podejście sprawdza się głównie w programowaniu obiektowym, ale też w innych paradygmatach.

Blog

Powiązane artykuły

Czytaj więcej
Project manager

Jak używać wzorca Strategy w projektach?

Czy zastanawiałeś się kiedykolwiek, jak znacznie poprawić skalowalność i elastyczność Twojego projektu IT? Wzorzec Strategy to prosty, a jednocześnie potężny sposób na osiągnięcie tych celów. W tym artykule przedstawię, jak efektywnie wykorzystać ten wzorzec, by maksymalizować sukces Twoich projektów.

Tomasz Kozon
05 sie 2024
Project manager

Rola Architekta IT w podnoszeniu efektywności realizacji projektów

Architekt IT pełni niezwykle istotną rolę w zapewnianiu efektywności realizacji projektów. Ponieważ zapewnia nie tylko techniczną wiedzę specjalistyczną, ale również holistyczne spojrzenie na system i procesy, jest w stanie znacznie usprawnić proces zarządzania projektem. W tym artykule przyjrzymy się, jak to się odbywa w praktyce.

Tomasz Kozon
11 paź 2023
Project manager

Co powinno znaleźć się w Project Handover Checklist? Kluczowe elementy

Rozpoczęcie nowego projektu IT to zawsze ekscytujący moment, ale równie ważne jest jego właściwe zakończenie. Dokument zwany Project Handover Checklist jest bezcenny dla zarządzania projektem IT. To lista kontrolna przekazania projektu, która zawiera wszystkie kluczowe elementy niezbędne do prawidłowego i bezproblemowego przekazania projektu. W tym artykule omówimy, co powinno znaleźć się na takiej liście, od A do Z.

Tomasz Kozon
11 lis 2024
Project manager

Marketplace dla gastronomii – jak działa i dlaczego zyskuje na popularności?

Nowoczesne platformy marketplace coraz silniej kształtują rynek gastronomiczny, zmieniając sposób, w jaki zamawiamy jedzenie i odkrywamy nowe miejsca. Restauracje, kucharze i klienci spotykają się dziś w jednym cyfrowym ekosystemie, który ułatwia wybór, zakup i dostawę posiłków. Dynamiczny rozwój technologii sprawia, że marketplace’y stają się nie tylko wygodnym narzędziem, ale również strategicznym kanałem sprzedaży dla wielu lokali.

Tomasz Kozon
05 gru 2025