Wpis z mikrobloga

@Parseval: Nie znam się na CPP, ale jeżeli masz cykliczne zależności, to coś spieprzyłeś przy modelowaniu. Socket i Alarm to twoje klasy, jesteś w stanie je napisać inaczej?
  • Odpowiedz
@piszczu: Jestem w stanie je napisać inaczej, to mój hobbystyczny projekt.

@Saly:
- Klasa XMLParser zawiera metody parsujące pliki XML z różnymi parametrami, klientami, alarmami itp.
- Klasa Socket zawiera metodę nasł#!$%@?ącą za przychodzącymi danymi, używa klasy XMLParser do sprawdzania czy odebrane dane pochodzą od Klienta, który znajduje się w "bazie" (plik .xml). Służy też do rozsyłania różnych wiadomości do klientów (też dane zaczytywane z .xml). Używa metod klasy alarm
  • Odpowiedz
@Parseval: Jak ja to widzę
1) XMLParser powinien służyć tylko do odczytu z pliku XML,
do zaczytywania alarmów i klientów zrób osobne klasy, które będą korzystały z XMLParser, roboczo
Clients i Alarms
2) Socket powinno zajmować się jedynie przyjmowaniem danych z zewnątrz i ewentualnie wysyłania ich na zewnątz. wywal z tamtąd całą logikę dotycząca sprawdzania co przyszło i obsługi tego ruchu.
Możesz to zrobić za pomocą wzorca observer czyli:
- tworzysz
  • Odpowiedz
@Parseval: jedna klasa = jedna funkcjonalność. Przykładowo nie może być tak, że klasa xmlparser zajmuję się odczytem pliku, zapisywaniem do pliku, wysyłaniem informacji oraz innymi rzeczami. Tak jak napisał kolega @piszczu, xmlparser powinien służyć tylko do odczytu pliku
  • Odpowiedz
@Parseval: Niee nie, odczyt i zapis do pliku to to samo. Bardziej chodziło o to, żeby ta klasa nie sprawdzała czy klient jest już w bazie i takie tam. Żeby nie zapisywała zarówno klientów jak i alarmów. Oddziel całkowicie klienty od alarmów. Co do wzorców to napiałem CI nazwę, Observer i szeroko pojęte OOP.
Tak na przyszłość, jeżeli masz zależność cykliczną spowodowaną tym, że klasa jest jednocześnie wejściem i wyjściem z
  • Odpowiedz
@Parseval: Bardzo dużo. Ćwicz i czytaj książki :) Jeżeli ogarniasz już użycie języka jako narzędzia (tj. wiesz co to dziedziczenie, interfejs, kiedy użyć pętli a kedy trzeba dodać instrukcję warunkową) to polecam Ci kolejno te 3 pozycje wujka Boba. "Czysty kod. Podręcznik dobrego programisty", "
Mistrz czystego kodu. Kodeks postępowania profesjonalnych programistów", "Czysta architektura. Struktura i design oprogramowania. Przewodnik dla profesjonalistów". Zauważyłem, że osoby które zaczynaja swoją drogę do #programista15k olewają
  • Odpowiedz
@piszczu: Jeszcze mam takie pytania:
1. Lepiej jest utworzyć jeden globalny obiekt parsujący XML'a czy dla każdego obiektu, który wymaga jakiejś interakcji z XML'em tworzyć osobny obiekt?

2. Kiedy stworzę klasę np. ClientObserver, to obiekt takiej klasy powinien zawierać listę wszystkich klientów, a obserwator znajdujący się w sockecie dostaje jakieś dane i wtedy podejmuje decyzje, co zrobić z danym klientem?
  • Odpowiedz
Głównie męczy mnie problem listy klientów, która będzie obsługiwana w kilku miejscach. Przechowywanie jej globalnie ma sens?
  • Odpowiedz