Prośba o sprawdzenie metody.

Odpowiedz Nowy wątek
2015-08-21 08:22
Wybitny Terrorysta
0

Witam, pokrótce zarysuję problem :
Mam sobie klasę, której obiekty tworzę na podstawie danych zawartych w pliku .txt . Jako, że nie nie wywołuję tej metody na instancji żadnego obiektu zadeklarowałem ją jako static, i w sumie, przyznam, że nie wiem czy to dobre wyjście (tzn. czy może nie powinienem opakować tego jako jakiś default interface, albo może jakąś klasę typu Loader, albo coś - w sumie sam nie wiem), dodam tylko, że mam sporę wątpliwości czy takie deklarowanie metody jest w porządku. Poniżej kod :


public static void loadDataToList(List<Mother> list) throws FileNotFoundException, IOException {

        BufferedReader bufferedReader = new BufferedReader(new FileReader("Mamy.txt"));

        for (String line; (line = bufferedReader.readLine()) != null;) {
            String[] parts = line.split(" ");

            list.add(createMother(parts[0], parts[1], parts[2]));

        }

        bufferedReader.close();

    }

Metoda nie jest skomplikowana, tak jak napisałem wyżej martwi mnie static.

Pozdrawiam, i dzięki za sugestie.

@Shalom co Ty to mówiłeś, że powinno się robić za statyczne metody? Walić po łapach? Ban? - panryz 2015-08-21 09:19

Pozostało 580 znaków

2015-08-21 09:15
0

A o konstruktorach słyszałeś?

http://javastart.pl/static/pr[...]wanie-obiektowe/konstruktory/

edytowany 1x, ostatnio: Heheczek, 2015-08-21 09:16

Pozostało 580 znaków

2015-08-21 09:25
0
  1. Ta metoda nie powinna przyjmować listy do której ładuje dane tylko ZWRACAĆ taką listę!
  2. try with resources...
  3. Chciałbym zobaczyć jak piszesz unit testy dla metod które korzystają z tej twojej statycznej metody...

Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2015-08-21 10:05
Wybitny Terrorysta
0

@Heheczek nie widzę związku...
@Shalom Ad 1. poprawiłem, i racja, lepsze podejście. Ad 2. poprawiłem , jest blok try , i klauzule finally.

Jednak ciągle nie rozumiem 2 rzeczy :
1) dlaczego uważacie, że statyczne metody to zło.
2)wyciągam dane z pliku -> w metodzie createMother, parsuje niektóre dane na int (chciałem uniknąć bałaganu dlatego stworzyłem metodę w której jest to ukryte) -> zwracam nowy obiekt. Wydawało mi się to logiczne podejście, tzn. zaznaczam "wydawało mi się". Dlaczego uważacie, że jest to złe podejście ?

Dzięki za sugestie.

Nie nie nie, żadne finally nie jest tu potrzebne! https://docs.oracle.com/javas[...]eptions/tryResourceClose.html - Shalom 2015-08-21 10:06

Pozostało 580 znaków

2015-08-21 10:09
0

1) A potrafisz napisać unit test dla kodu który używa tej twojej metody, który będzie niezależny od tej metody? Potrafisz zamockować statyczną zależność? To się da zrobić, ale nie jest to oczywiste. Poza tym statyczne zależności są problematyczne bo np. nie możesz ich łatwo synchronizować dla wielowątkowości, nie możesz wykorzystać tu polimorfizmu i wiele wiele innych problemów. Poczytaj w internecie czemu static nie jest pożądany ;]


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2015-08-21 10:31
0

Metoda może być statyczna, jeśli operuje wyłącznie na swoich parametrach i zwraca wynik. Przykładem takiej metody jest np. Add, albo konwersja z obiektu jednego obiektu na drugi, ewentualnie tworzenie obiektu na podstawie danych z pliku (ale już z bazy lepiej nie).

W Twoim kodzie dużo większą zbrodnia jest nie zwracanie wyniku niż to, że metoda jest statyczna.


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0