Prośba o sprawdzenie metody.

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.

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...
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.

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 ;]

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.

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