Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sprawdzanie czy klasa dziedziczy po innej, oraz czy implementuje dany interfejs a wydajność aplikacji., Czy wydajność powinna aplikacji być na pierwszym miejscu?
adbacz
post
Post #1





Grupa: Zarejestrowani
Postów: 532
Pomógł: 24
Dołączył: 15.04.2011
Skąd: Kalisz

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


Otóż, zastanawia mnie taka rzecz, mamy aplikację, w której stosujemy pewnego rodzaju moduły. Moduł składa się z jednego pliku PHP, w którym jest klasa. Klasa ta dziedziczy po ogólnej klasie (załóżmy: Module) oraz implementuje interfejs (ModuleInterface). Dziedziczy, by móc korzystać z dobrodziejstw aplikacji, na której działa, a implementuje, by każdy moduł posiadał jedno wspólne API, by aplikacja wiedziała, jak je uruchomić (moduły).

Teraz pytanie: Jeśli w aplikacji, modułów mamy przykładowo 20 (każdy z nich może być też wielokrotnie konkretyzowany), to czy za każdym razem sprawdzać, czy dany moduł implementuje dany interfejs oraz czy dziedziczy po danej klasie? Sprawdzanie za każdym razem kolejnej klasy będzie sprawiać obciążenie, w tym wypadku niepotrzebne (IMO). Jeśli programista nie użyje dziedziczenia, to sam zauważy, że coś mu nie działa, więc "podepnie" klasę do innej (w tym przypadku Module). A jeśli nie zaimplementuje interfejsu... no cóż, najprawdopodobniej wyskoczy błąd PHP, że nie ma takiej metody - jeśli defacto jej nie doda do klasy.

Jak bardzo należy trzymać się wydajności aplikacji, na rzecz sprawdzania tego typu rzeczy. I nie chodzi mi tylko o moduły, ale praktycznie każdą rzecz, która powinna posiadać dziedziczenie lub implementować jakiś interfejs.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
vermis
post
Post #2





Grupa: Zarejestrowani
Postów: 279
Pomógł: 56
Dołączył: 3.06.2010
Skąd: Tarnowskie Góry

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


Cytat(adbacz @ 16.06.2014, 14:02:58 ) *
Jak bardzo należy trzymać się wydajności aplikacji, na rzecz sprawdzania tego typu rzeczy. I nie chodzi mi tylko o moduły, ale praktycznie każdą rzecz, która powinna posiadać dziedziczenie lub implementować jakiś interfejs.


Aplikacja powinna działać przede wszystkim stabilnie. Zastanów się czy klient doceni jej wydajność, jeśli co chwilę coś nie będzie działało i rzucało błędami?
Go to the top of the page
+Quote Post
adbacz
post
Post #3





Grupa: Zarejestrowani
Postów: 532
Pomógł: 24
Dołączył: 15.04.2011
Skąd: Kalisz

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


Cytat(vermis @ 16.06.2014, 15:31:01 ) *
Aplikacja powinna działać przede wszystkim stabilnie. Zastanów się czy klient doceni jej wydajność, jeśli co chwilę coś nie będzie działało i rzucało błędami?


Klient docenia szybkość działania aplikacji, a błędy zdarzają się jak zawsze, przy produkcie, który jest stale rozwijany, ale są to błędy przeważnie na poziomie GUI czy danego kontrolera, niż tak bardzo systemowe.

Cytat
1. Dziedziczenie praktycznie nigdy nie powinno być wykorzystywane do sprawdzania API danej klasy - od tego są właśnie interfejsy, tylko na nich powinieneś się skupić.


To rozumiem, nie korzystam z dziedziczenia w tym sensie. Są one po to, by każdy z modułów posiadał dokładnie ten sam zestaw metod, chciałem ujednolicić zarządzanie danymi. Nie mówię, że to dobre rozwiązanie, ale znakomicie się sprawdza.

Cytat
2. Masz jakiś faktyczny problem z wydajnością w tym aspekcie? Przedwczesna optymalizacja często dostarcza jedynie niepotrzebnych problemów.


Nie sprawdzałem jeszcze jak bardzo obciążenie to generuje, ale tak, szukam rozwiązań, które mogę zastosować by przyśpieszyć aplikację.

@by_ikar - Niestety, nie mogę liczyć na jednolite serwery u wszystkich klientów. Gdybym tak zrobił to miałbym ich bardzo mało. Aplikacja działa z PHP 5.3.10+, więc na większości serwerów dzisiejszych w miarę przyzwoicie, ale ja wiem, że zawsze jest coś co można przyśpieszyć, polepszyć. Właśnie tego szukam i dlatego ten temat.

Chciałbym po prostu poznać zdanie ludzi, którzy są bardziej doświadczeni w tym temacie. Mimo, że ktoś wie dużo, zawsze jest jakiś temat, na który wie się mało - stąd na przykład to moje pytanie.
Go to the top of the page
+Quote Post

Posty w temacie


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: 10.10.2025 - 12:47