![]() |
![]() |
![]()
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: 107 Pomógł: 9 Dołączył: 16.02.2004 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za odpowiedzi. Ta biblioteka AspectMock to super sprawa, nie wiedziałem że jest coś takiego.
Oczywiście zgadza się - wszystko zależy od tego jak się używa takich globalnych funkcji. Jak ktoś potrafi wstawić tam logikę biznesową czy elementy które powiązane z konkretnymi modułami programu no to lepiej żeby nie ich nie używał. Poniżej przykładowy kod:
Jest to oczywiście przykład uproszczony, sama metoda może nie zawierać na raz tyle funkcji globalnych. Chodzi o to żeby pokazać ich wykorzystanie. - Funkcja convertToSimpleString() zamienia ciąg znaków np: "Raport biegłego rewidenta z oświadczeniem - za ROK 2012" na "Raport_bieglego_rewidenta_z_oswiadczeniem_za_rok_2012" jednocześnie usuwając różne niepożądane znaki. - Funkcja createDir() sprawdza czy podany katalog istnieje - jeżeli nie to go tworzy. - Funkcja convertToHumanFormat() - zamienia rozmiar w bajtach na rozmiar w kB, MB, GB |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.10.2025 - 13:42 |