Czy to niewłaściwe mieć metody statyczne i niestatyczne w tej samej klasie?Czy stosowanie metod statycznych i niestatycznych w tej samej klasie jest złe?
Odpowiedz
Niezupełnie w zwykłym programowaniu java.
Ale jeśli pracujesz intensywnie nad zastrzykiem zależności, prawdopodobnie masz niewiele lub wcale nie masz statycznych metod. W takim kontekście dość powszechne jest posiadanie tylko kilku klas narzędziowych za pomocą metod statycznych i innych metod statycznych.
Nie sądzę, że szczególnie w przypadku singletonów.
Nie, nie jest źle. Na przykład powszechnym zastosowaniem jest posiadanie statycznych metod fabrycznych w definicji klasy.
Wydaje mi się, że można tworzyć statyczne klasy utils, szczególnie gdy nie masz pewności (jeszcze) jaki powinien być projekt, ponieważ wciąż uczysz się o domenie problemu.
Statyczność jest markerem "jeszcze zaprojektowanym prawidłowo". Często statyczne rozwiązanie jest całkowicie wystarczające; ale czasami, w miarę postępów projektu, musisz napisać "całą partię", ale masz (na późniejszym etapie) o wiele pełniejsze zrozumienie dziedziny problemowej, a zatem jesteś w stanie właściwie zaprojektować "właściwe rozwiązanie" tych problemów.
Myślę, że nas programistów młotkuje się niesprawiedliwie o "przeróbki". Musisz wykonać pracę, aby zrozumieć pracę wystarczająco dobrze, aby wykonać pracę poprawnie. Nie widzę żadnego wyjścia poza ten haczyk 22;
Mogę przytoczyć wiele przykładów statycznych z podstawowego API. java.lang.Math, java.util.Arrays, java.util.Collections. ALE zwróćcie uwagę, że te klasy są "klasami utils", które istnieją tylko po to, aby zapewnić mnóstwo statycznych metod. IMHO, Obecność metod statycznych w "obiekcie stanowym" to po prostu błaganie o refaktoryzację.
Założę się, że dzisiejsi projektanci interfejsów API chcieliby móc dzielić Integer (i inne klasy wrapperów) ... ALE są dobrze i prawdziwie zatrzymani z tym, co mają. Co jest samo w sobie ostrzeżeniem ... to statyczne implikuje ostateczne i istnieje cholernie dobry powód, dla którego (w przeciwieństwie do C++) metody java mogą być nadpisywane domyślnie . Statyczny jest z natury bardziej "wiążący" niż nie-statyczny ... do tego stopnia, że NIE MOŻESZ dostosować implementacji do różnych sytuacji, kontekstów itp. Itp.
Pozdrawiam. Keith.
Uważam, że nie jest dobrym pomysłem posiadanie metod statycznych i niestatycznych w tej samej klasie o tej samej nazwie. To może być bardzo mylące. Proponuję, aby w tym przypadku nazwy były inne.
Podobnie, nie należy tworzyć metod o tej samej nazwie, ale o różnej wielkości liter lub metod o tej samej nazwie, co klasa w tej samej klasie. Oba są legalne, a nawet występują w JDK, ale mylą IHMO.
- 1. xCode/deklarowanie metod statycznych w klasie
- 2. Przeciążanie operatora <i operatora> w tej samej klasie
- 3. Sprawdź, czy metoda istnieje w tej samej klasie.
- 4. prywatnych statycznych pól w niewyspecjalizowanych klasie statycznej
- 5. Dlaczego konstruktor i główna metoda w tej samej klasie?
- 6. Korzystanie z metod statycznych lub bez metod statycznych w klasie Dao?
- 7. Używanie podwójnych dwukropków - różnica między odwołaniami do metod statycznych i niestatycznych
- 8. Czy korzystanie z html w klasie php jest złe?
- 9. Czy ustawienia hardcode w klasie są złe?
- 10. C# Alternatywa dla wirtualnych metod statycznych i podklatek statycznych
- 11. Wady metod statycznych w PHP
- 12. Korzystanie rodzajowy interfejs kilka razy w tej samej klasie
- 13. Wywołanie funkcji prywatnej w tej samej klasie python
- 14. Punkty referencji klasy do innego elementu w tej samej klasie
- 15. Java - gra liczbowa - wiele ActionListener w tej samej klasie
- 16. Utwórz wątek w klasie z funkcją z tej samej klasy.
- 17. Wywołanie metody z innej metody w tej samej klasie PHP
- 18. Wywołanie konstruktora z innego konstruktora w tej samej klasie
- 19. Czy istnieje sposób użycia właściwości o tej samej nazwie, ale jest innego typu w klasie pochodnej?
- 20. Dwa typy tej samej klasy w klasie obiektu encja
- 21. dlaczego nie możemy zadeklarować obiektu klasy w tej samej klasie?
- 22. Dziedziczenie metod statycznych w ES6
- 23. Czy jako "mockista" praktykujący TDD powinienem wyśmiewać inne metody w tej samej klasie, co testowana metoda?
- 24. Testowanie klas statycznych i metod w języku C# .NET
- 25. Korzystanie z metod ogólnych, czy możliwe jest odzyskanie różnych typów z tej samej metody?
- 26. style Drugi element na stronie o tej samej klasie
- 27. Zmiana koloru tła wszystkich elementów o tej samej klasie
- 28. Czy salesforce Apex obsługuje dziedziczenie metod statycznych?
- 29. Jak najlepiej przekazać metody do metod tej samej klasy?
- 30. Czy złe praktyki programistyczne mają członków "publicznych" w klasie "Wewnętrznej"?
W "obiektach stanowych", jak masz tendencję do refaktoryzacji metod statycznych - przenieś je do klas pomocniczych/utylitarnych lub po prostu uczyń je niestatycznymi? (A co z prywatnymi metodami pomocniczymi - czy uczyniłbyś je niestatycznymi bez względu na to, czy używają pól instancji?) – Jonik
Jeśli metoda nie wymaga podania ostatniej rzeczy, to bycie samozwańczonym manekinem daje jej dostęp do stwierdzenia, ponieważ wtedy musiałbym się martwić stanem klasy, która czyta/pisze/edytuje tę metodę (która może być całkiem sporym kawałkiem). Wolę podzielić klasy na "stateful" i Helper. Śledź mój obecny projekt C#. GmlReader (google GML) jest statyczną klasą utils z jedną publiczną metodą: public static IGeometry ReadGeometry (czytnik XmlReader) ...wielu ludzi miesza serializację i deserializację w DTO, który nie skaluje się dobrze do wielu formatów. Jak ja to robię. YMMV. – corlettk