Z pogranicza

Dlaczego korzystać z generatorów komunikatów

  • 2010-04-28 16:35
  • 1 komentarz
  • 318 odsłon
  • Oceń ten tekst jako pierwszy

Ale o co chodzi?


Wszedłeś właśnie na stronę swojego serwisu społecznościowego. Następny komunikat jaki ujrzysz może wyglądać na przykład tak:

        Witaj Adamie!
 
        Ostatni raz odwiedziłeś nas 24.03.2010 r. z IP 127.0.0.1.
        Od tego czasu na forum przybyło 40 nowych postów które mogą cię zainteresować.


Każdy prawie programista ma czasami konieczność wykonania takiego komunikatu.
Kod kryjący się za takimi $$$ zazwyczaj wygląda mniej-więcej tak:

        "Witaj " + UserName + "!\n\n" +
        "Ostatni raz odwiedziłeś nas " + LastVisitDate + " z IP + " LastIP + ".\n" +
        "Od tego czasu na forum przybyło " + Count + " nowych postów które mogą cię zainteresować."


Takie rozwiązanie jest niewątpliwie proste w programowaniu i intuicyjne... Ale też nieczytelne i trudne do modyfikacji.

Generator komunikatów


Lepszym sposobem byłoby napisanie jakiegoś generatora komunikatów tworzącego gotowe wiadomości z podanego schematu, mogącego wyglądać na przykład tak:

        Witaj %0!
 
        Ostatni raz odwiedziłeś nas %1 r. z IP %2.
        Od tego czasu na forum przybyło %3 nowych postów które mogą cię zainteresować.


Za pomocą znaku '%' odnosimy się do pola w jakimś rekordzie/strukturze.

Taki schemat mógłby być interpretowany przez następujący pseudokod

        odczytaj rekord;;
        pętla po wszystkich znakach w schemacie
                c = następny znak;
                if (c != %) dodaj do bufora c;
                else 
                        switch (c)
                                '0'..'9': dodaj do bufora wartość c-tego pola rekordu;
                                '%': dodaj do bufora '%';
                                default: zgłoś błąd w schemacie


Podsumowanie


Na zakończenie tego krótkiego artykułu dodaj jeszcze podsumowanie najważniejszych wad i zalet takiego rozwiązania.

Zalety:
  • Kod jest krótszy.
  • ...i czytelniejszy.
  • DRY (wystarczy jedna metoda do wysyłania wszystkich możliwych wiadomości).
  • Modyfikacja schematu nie wymaga modyfikacji kodu.
  • ...oraz jest prostsza (bez bawienia się w \n etc)
  • W prosty sposób można przenieść schematy do plików zewnętrznych.
  • Rozdzielenie logiki od prezentacji
  • W przypadku wielu różnych generowanych komunikatów - szybskość implementacji.

Wady
  • W przypadku małych programów nie ma sensu pisać generatora
  • Generowanie jest wolniejsze (chociaż można napisać np. jakąś prekompilacje dla schematów - wszystko zależy od ciebie, to ty jesteś programistą).

1 komentarz

dzek69 2010-05-09 14:17

tak ten.. tylko, że większość znanych mi języków ma coś takiego jak printf/sprintf/etc.
Albo nie łapię Twojej idei, albo to jest bez sensu