Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 107 Pomógł: 9 Dołączył: 16.02.2004 Skąd: Kraków Ostrzeżenie: (0%)
|
Czy używacie funkcji własnych funkcji globalnych wewnątrz klas? Chodzi mi o typowe funkcjie pomocnicze (helper functions), które dokonują jakiś obliczeń czy robią transformacje na ciągach znaków. Są małe, ogólne i zupełnie niezwiązane z logiką biznesową czy modułami programu.
Minusem tych funkcji jest to że uniemożliwiają testowanie (mockowanie) klas podobnie jak funkcje statyczne. (Jest jakieś dobry polski zamiennik na "mock")? Plusem jest to, że są zawsze dostępne - nie wymagają tworzenia obiektu i przekazywania za pomocą dependency injection. Jak rozwiązujecie ten problem? Bez funkcji globalnych tylko zawsze jako metody przypisane do konkretnej klasy? Czy może jednak funkcje globalne ale tylko w projektach dla których nie są wykonywane testy jednostkowe? |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%)
|
Najlepiej spojrzeć na jakiś framework, gdy projektujemy np. kontroler to musimy przemyśleć nasz abstrakt:
- jakie metody w nim zaimplementować (co często jest trudne) - jak dostarczyć do niego potrzebne zależności - jak w łatwy sposób rozszerzać klasę Przy dostarczaniu zależności wykorzystujemy kontener, implementując interfejs z metodą "setContainer" Potem gdy rozszerzamy klasę, to zazwyczaj deklarujemy ją jako serwis aczkolwiek jeśli implementuje ona kontener to możemy używać:
Jednak z wiadomych względów nie jest to zalecane. Oczywiście są też względy praktyczne, stąd używanie kontenera bo: - z klasy abstrakcyjnej nie da się przecież utworzyć obiektu i czegoś tam wstrzyknąć - dobrze jest mieć do dyspozycji konstruktor (ciągłe call super czy tam parent nie jest przecież zalecane) - wygoda |
|
|
|
Brick Helper functions / funkcje globalne w OOP 29.10.2017, 11:20:17
sabat24 Jeśli o mnie chodzi, to wszystko zależy jakie są p... 29.10.2017, 14:20:17
Pyton_000 Przecież da się wytestować metodę która ma jakieś ... 29.10.2017, 14:44:15
markuz [PHP] pobierz, plaintext public static function in... 29.10.2017, 15:49:25
Brick Dzięki za odpowiedzi. Ta biblioteka AspectMock to ... 30.10.2017, 09:20:10 
Pyton_000 Cytat(Brick @ 30.10.2017, 09:20:10 ) ... 30.10.2017, 10:18:30
Pilsener CytatCzy używacie funkcji własnych funkcji globaln... 30.10.2017, 09:59:29
Brick CytatPrzy czym część funkcji jest dostępna default... 31.10.2017, 08:13:31
Pilsener CytatW jaki sposób jest dostępna defaultowo? - naj... 31.10.2017, 09:04:15
Brick Cytatnajczęściej jest zaimplementowana w odpowiedn... 2.11.2017, 13:06:27
Brick Cytatzauważyłem, że kontener zależności ładowanych... 6.11.2017, 09:35:02
Pilsener Chodzi o to, że obiekty są przygotowywane dopiero ... 6.11.2017, 13:28:14
Brick Dzięki za wszystkie odpowiedzi.
Podsumowując dla ... 9.11.2017, 12:51:48
nospor Cytatchyba że są to zupełnie małe, ogólne i niezal... 9.11.2017, 12:55:50
Pyton_000 Z tym pp figury to akurat słaby przykład Bo taka ... 9.11.2017, 13:30:42 ![]() ![]() |
|
Aktualny czas: 31.12.2025 - 10:04 |