✅ Nowości, motywy, wtyczki WEB i WordPress. Tutaj dzielimy się wskazówkami i najlepszymi rozwiązaniami dla stron internetowych.

Wiele obiektów zapisuje dane: jak tego uniknąć

6

Znasz te czasy, kiedy pracujesz nad programem, a w Twoim kodzie są miejsca, które w zależności od wymagań lub pojawiający się w jakiś sposób błąd jest bezpośrednio związany z faktem, że masz wiele obiektów zapisujących dane do tego samego magazynu danych? To nie jest dobra rzecz.

To okropny sposób na rozpoczęcie postu. Spróbuję jeszcze raz.

Wiele obiektów zapisuje dane

Załóżmy, że pracujesz nad programem i jedną z rzeczy, które wykonuje kod, jest aktualizowanie licznika gdzieś w bazie danych, aby śledzić, ile zmian zaszło w krótkim okresie czasu.

Problem: masz wiele miejsc w kodzie, które aktualizują ten licznik.

Wiele obiektów zapisuje dane (w przypadku, gdy moje pismo odręczne jest tak nieczytelne, jak się wydaje).

Nie sądzę, aby wielu z nas chciało pisać taki kod, ale tak się dzieje, a kiedy to się dzieje, kończy się to tymi wszystkimi skutkami ubocznymi, które po prostu powodują różne rodzaje dziwacznych zachowań. (Nie znam oficjalnego, akademickiego terminu na to – i nie mam na myśli DRY – ale nie mam nic przeciwko „zabawnemu zachowaniu" w tym poście.)

Wiemy intuicyjnie, że powinniśmy mieć jedno miejsce, w którym to wszystko się dzieje, czynniki zewnętrzne – czy to pełzanie zakresu, czy nieporozumienie z naszej strony w zrozumieniu wymagań, czy cokolwiek innego – powodują słabe kodowanie.

Tak więc mamy wszystkie te podmioty w naszym systemie, z których każdy rozmawia z jednym punktem w naszej bazie danych (lub jakimkolwiek innym magazynie danych), ale żaden z nich nie jest świadomy, że inni z nimi rozmawiają.

Ustaw granice

Możemy spróbować zwalczyć to za pomocą instrukcji warunkowych i innych, ale tylko to pogarszamy. Więc co mamy zrobić?

Wiem, podobnie jak w przypadku wielu rzeczy w programowaniu, jest wiele sposobów rozwiązania tego problemu, ale być może jednym z pierwszych przejść refaktoryzacji jest posiadanie klasy odpowiedzialnej za wydawanie aktualizacji do datastore.

W ten sposób możemy przejść od powyższej ilustracji do czegoś takiego:

Wiele obiektów zapisuje dane: jak tego uniknąć

Wiele obiektów zapisujących dane: Wyślij je do swego rodzaju mediatora.

Czyli wszystkie encje społeczności z tym obiektem i tym obiektem – i tylko ten obiekt może odczytywać i zapisywać dane do bazy danych.

Jest kilka wzorców projektowych, które pasowałyby do tego konkretnego problemu, ale to wykracza poza zakres tego postu. Zamiast tego staram się zwrócić uwagę na to, że jeśli napotkasz problem:

  • Podmioty zapisują dane do magazynu danych,
  • Robi to wiele podmiotów,
  • I rodzi niezamierzone konsekwencje,

Następnie spróbuj stworzyć klasę lub zbiór klas ściśle odpowiedzialnych za odczytywanie i zapisywanie danych. Tylko pozwól, aby informacje przechodziły przez te klasy, zamiast mieć wiele klas, aby manipulować danymi.

Ułatwia testowanie, ułatwia debugowanie i ostatecznie ułatwia czytanie.

Źródło nagrywania: tommcfarlin.com

Ta strona korzysta z plików cookie, aby poprawić Twoje wrażenia. Zakładamy, że nie masz nic przeciwko, ale możesz zrezygnować, jeśli chcesz. Akceptuję Więcej szczegółów