Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Walidacja, a OOP
Robert1985
post
Post #1





Grupa: Zarejestrowani
Postów: 84
Pomógł: 7
Dołączył: 5.08.2009
Skąd: Tychy

Ostrzeżenie: (0%)
-----


Witam czytam właśnie o programowaniu obiektowym i zastanawiam się nad pewną kwestią.
Jeżeli dla danego obiektu wszystkie składowe będą dostępne za geterami i seterami, to autorzy
książki zalecają sprawdzanie poprawności danych w tych metodach i rzucanie np. wyjątków. Zastanawiam się nad praktycznym zastosowaniem, bo jeżeli wypełniony POST nie będzie miał poprawnej wartości to raczej nie będziemy chcieli
walić errorami. Spotkałem się z rozwiązaniem polegającym na tworzeniu klasy, która pobiera wartości np. z POST, a następnie zwraca tablicę z errorami, którą można wyświetlić. Taka klasa ma sens, ale co wtedy ze sprawdzaniem w geterach i seterach ? Olać czy powielać, co wpłynie negatywnie na wydajność. Mam nadzieję, że opisałem jasno.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


1. Podwójne sprawdzanie nie wpłynie negatywnie na wydajność.
2. W setterach powinieneś raczej robić jedynie najbardziej podstawową walidację danych. Np. funkcja zwracająca pierwiastek kwadratowy może rzucić wyjątek gdy podamy jej liczbę ujemną, metoda która ma dodać coś do kolekcji unikalnych elementów może rzucić wyjątek w przypadku próby dodania duplikatu itp.
Go to the top of the page
+Quote Post
Dejmien_85
post
Post #3





Grupa: Zarejestrowani
Postów: 251
Pomógł: 23
Dołączył: 23.04.2013

Ostrzeżenie: (0%)
-----


Cytat(Robert1985 @ 25.05.2013, 19:40:45 ) *
Zastanawiam się nad praktycznym zastosowaniem, bo jeżeli wypełniony POST nie będzie miał poprawnej wartości to raczej nie będziemy chcieli
walić errorami.


A po co walić errory, jak można odesłać z powrotem do formularza (nie mówiąc już o tym, że za pomocą HTML5 i JS można się w 99,9% zabezpieczyć przez nieprawidłowymi danymi). ; )

Cytat(Robert1985 @ 25.05.2013, 19:40:45 ) *
Spotkałem się z rozwiązaniem polegającym na tworzeniu klasy, która pobiera wartości np. z POST, a następnie zwraca tablicę z errorami, którą można wyświetlić. Taka klasa ma sens, ale co wtedy ze sprawdzaniem w geterach i seterach ? Olać czy powielać, co wpłynie negatywnie na wydajność. Mam nadzieję, że opisałem jasno.


Powielanie kodu w OOP to grzech. Po co więc jakieś dziwactwa typu walidacja razy dwa? Nie lepiej przygotować klasę typu "SuperWalidator", która przejmie tą rolę i zrobi to "raz a dobrze" (tam gdzie trzeba)?
Go to the top of the page
+Quote Post
vincent vega
post
Post #4





Grupa: Zarejestrowani
Postów: 15
Pomógł: 1
Dołączył: 30.06.2009

Ostrzeżenie: (0%)
-----


Jeżeli tworzenie i aktualizacja obiektu następuje tylko w jednym miejscu - formularz. To możesz odpuścić sobie walidacje w setterach. Jeżeli jednak obiekt jest w zależności z innymi które mogą zmieniać jego stan to powinien sam zadbać o jego spójność i walidować dane. Zamiast walić errorami możesz wyrzucać jakiś ogólnie przyjąty wyjątek np InvalidArgumentException lub ValidationException, co by go przechwycić w formularzu i nie grzeszyć podwójną walidacją (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 01:42