Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Helper functions / funkcje globalne w OOP
Brick
post
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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
sabat24
post
Post #2





Grupa: Zarejestrowani
Postów: 175
Pomógł: 26
Dołączył: 13.09.2007
Skąd: Gdańsk

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


Jeśli o mnie chodzi, to wszystko zależy jakie są powiązania i do czego się używa takich metod. Jeśli to są klasyczne, proste helpery na zasadzie "wyciągnij pierwiastek", to nie ma najmniejszego problemu, by włożyć to w statyczną klasę Math i używać globalnie.

Co do testów, niektórzy powiedzą, że na statycznych nie robi się unit testów, tylko testy integracyjne. Jak dla mnie "zwał jak zwał", ale jeśli metoda się da przetestować, a kod typu:

  1. public static function in_array_all($needles, $haystack) {
  2. return ! array_diff($needles, $haystack);
  3. }


jest bardzo łatwy to przetestowania, to nie widzę problemu, by dla wygody nie użyć go jako w klasie statycznej.

Odnośnie mockowania (zwię się to atrapa po naszemu), to jest np. taka biblioteka: https://github.com/Codeception/AspectMock

Oczywiście da się przesadzić ze statycznością, ale jeśli się korzysta z takich helperów, ja nie widzę przeciwskazań. Nigdy jednak nie byłem zwolniennikiem purystycznego kodu dla samej sztuki.
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: 12.10.2025 - 07:48