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
markuz
post
Post #2





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


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


Dla mnie to nic innego jak własny alias, jak jestem nowym programistą w projekcie to wolę zobaczyć zapis !array_diff($needles, $haystack) niż Costam::in_array_all($needles, $haystack) - w 1 przypadku nie muszę zaglądać głębiej, w 2 niby wiem po nazwie co robi metoda ale doświadczenie pokazuje, że trzeba tam zajrzeć.

Aktualnie jestem zwolennikiem nie używania takich helperów w kodzie klas - często trafia do nich logika biznesowa. A sam fakt, ze musimy użyć w wielu miejscach metody z jakiegoś helpera może świadczyć o błędnej architekturze. Nawet jeżeli nie ma tam logiki biznesowej to pojawi się programista który ją tam umieści żeby nie główkować za długo.

Jednak każdy przypadek trzeba rozpatrzeć osobno, możesz podać konkretny przykład helpera i jego użycia w konkretnych klasach.
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: 7.10.2025 - 22:32