Stworzyłem prywatną metodę sprawdzania poprawności dla pewnej weryfikacji, która ma miejsce wielokrotnie w mojej klasie (nie mogę przechowywać zweryfikowanych danych z różnych powodów). Teraz ReSharper sugeruje, że funkcja może być statyczna. Nie chcę tego robić z powodu znanych problemów z metodami statycznymi. Byłaby to prywatna metoda statyczna. Moje pytanie brzmi: czy prywatne metody statyczne mogą powodować podobne problemy z łączeniem i testowaniem, jak publiczne metody statyczne? Czy to zła praktyka? Nie sądzę, ale nie jestem pewien, czy jest tu pułapka.
c#
static-methods
Tamás Szelei
źródło
źródło
Odpowiedzi:
Pomyślałbym: „Czy muszę to przetestować?”
Jeśli twoja metoda i tak jest prywatna, co oznacza, że nie chcesz testować logiki jednostkowej w samej metodzie, to jeśli chodzi o testowalność i łatwość konserwacji, twoja klasa jest czarną skrzynką w obu przypadkach, wewnętrzne funkcjonowanie twojej klasy jest jej sprawą i jest sam. Nie wpłynie to również na refaktoryzację, co również należy rozważyć.
Tak więc, moim zdaniem: Nie, stworzenie „prywatnej” metody „prywatnej statycznej” nie będzie miało żadnych długoterminowych konsekwencji.
źródło
Z mojego punktu widzenia prywatne metody statyczne są najłatwiejsze z możliwych.
DataIn -> Metoda -> DataOut
Nie ma zależności od obiektów zewnętrznych, żadnych skutków ubocznych. Dlaczego uważasz je za złe?
źródło
Testowanie klas, które używają publicznych metod statycznych może być trudne, ponieważ nie jest (szczególnie) łatwe do zetknięcia / sfałszowania / wyszydzenia metod statycznych. Z drugiej strony metody instancji można łatwo wyśmiewać, szczególnie jeśli są wirtualne lub spełniają interfejs.
Nie widzę jednak żadnego powodu, aby nie używać prywatnych metod statycznych. Rzeczywiście, istnieje niewielka poprawa wydajności, ponieważ nie potrzebujesz wystąpienia klasy, aby zająć pamięć.
Z drugiej strony wszystko statyczne to zapach kodu. Czy to rzeczywiście „klasa pomocnicza”? Czy to możliwe, że metoda może bardziej użytecznie znajdować się w jednej z klas przekazywanych jako parametr? Odpowiedź na te pytania często brzmi: „jest statyczna”, ale warto o tym pamiętać.
źródło
static
słowem kluczowym wydaje się nieuzasadniony.