• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Gettery I Settery

VPS Starter Arubacloud
0 głosów
568 wizyt
pytanie zadane 30 listopada 2020 w Java przez Kuciniak Użytkownik (920 p.)

Witam, mam pytanie odnośnie "zasad" przy getterach i setterach. Jakie są ogólne zasady przy ich używaniu i co w nich może być? Np. czy umieszczenia scannera w getterze jest akceptowalne? Czy jest to błąd? A jeśli tak to czy np. this.setName(getName()); jest dobrym rozwiązaniem?
Poniżej daje kod żeby to zobrazować.

public void getDataPerson() {
    this.setFirstName(getFirstName());
}
public String getFirstName() {
    System.out.println("Podaj imię: ");
    firstName = scanner.nextLine();
    return firstName;
}
public void setFirstName(String firstName) {
    if (!checkCorrectText(firstName) && !firstName.isEmpty()) {
        this.firstName = firstName;
    } else {
        System.out.println("Niedozwolone znaki (imię)");
        this.setFirstName(getFirstName());
    }
}

 

1 odpowiedź

+2 głosów
odpowiedź 30 listopada 2020 przez Wiciorny Ekspert (269,120 p.)
wybrane 3 grudnia 2020 przez Kuciniak
 
Najlepsza

Geter i seter służy do ustawiania, pobierania zmiennych "pól" klasy.
Generalnie w getrach i seterach nie powinno być innej logiki - według zasad, funkcja powinna  mieć jednoznaczną funkcjonalność, czyli tzw. pojedynczą odpowiedzialność. 
Nie powinna robić "dodatkowych rzeczy" do których nie jest przeznaczona 

Generalnie odchodzi się od stosowania również SETERÓW w większości przypadków, korzysta sie w ten sposób z konstruktora parametryzowanego. 

scannera w getterze jest akceptowalne? 

umieszczanie scannera jest niedopuszczalne. I jest to duży błąd. 

this.setName(getName());

A co jeśli aktualnie "getName" jest nullem? i po co ustawiasz da obiektu "this... czyli instancji obiektu" próbujesz ustawić pobierając wartość "getName()" dla tego obiektu ? 

Zrozum wpierw czym jest this, i jak działają metody w ramach INSTANCJI OBIEKTU 

komentarz 30 listopada 2020 przez Ehlert Ekspert (212,630 p.)

Ja dodam od siebie że warto użyć lombocka, oraz dla obiektów typu dto nieźle sprawdzają się Recordy z nowszej Javy. yes

1
komentarz 30 listopada 2020 przez Wiciorny Ekspert (269,120 p.)

Obiektów typu DTO, nie ma czegoś takiego jak obiekt typu DTO :)... bo jeśli ktoś nie pracuje z ORM to nie istnieje opjęcie Data To Object, więc obiekt nie jest "wtedy  tylko encją danych"

Lombok- może, ale raczej nie polecam bo to powoduje że potem nie wiesz co się dzieje, w kodzie i Lombok jest okej własnie dla może POJO, może DTO, ale dla naprawdę doświadczonych i powinien ograniczyć się do właściwie metod obiektu a nie stosować go wszedzie  bo potem  taki programista "niby coś wie" ale nic nie wie bo wszyzstko robił  za pomocą frameworków i adnotacji

 

  1. DTO to Data Transfer Object, czyli obiekt służący do transferu danych po sieci i innego sensu to nie ma.

a jeśli po prostu tworzysz jakąś klase, to chyba pomyliłeś z POJO :)  

1
komentarz 30 listopada 2020 przez Borys0 Początkujący (400 p.)

1. DTO to Data Transfer Object, czyli obiekt służący do transferu danych po sieci i innego sensu to nie ma.

DTO służy do transferu danych nie tylko po sieci, ale też wewnątrz aplikacji pomiędzy warstwami, zresztą to nie jedyne możliwości.

Lombok- może, ale raczej nie polecam bo to powoduje że potem nie wiesz co się dzieje, w kodzie i Lombok jest okej własnie dla może POJO, może DTO, ale dla naprawdę doświadczonych i powinien ograniczyć się do właściwie metod obiektu a nie stosować go wszedzie  bo potem  taki programista "niby coś wie" ale nic nie wie bo wszyzstko robił  za pomocą frameworków i adnotacji

Potwierdzam. Dodam jeszcze od siebie, że raz próbowałem użyć lomboka w istniejącej aplikacji i przestała działać, wtedy od doświadczonego programisty usłyszałem coś podobnego.

1
komentarz 30 listopada 2020 przez Wiciorny Ekspert (269,120 p.)
Data Transfer Object w skrócie DTO jest wzorcem projektowym należącym do grupy wzorców dystrybucji. Podstawowym zadaniem DTO jest transfer danych pomiędzy systemami, aplikacjami lub też w ramach aplikacji pomiędzy warstwami aplikacji, modułami lub też w każdej dowolnej sytuacji, w której transfer danych jest konieczny. DTO

Ale nie należy tego ograniczać do spirnga, bo ludzie widzą tylko JAVA-SPRING :D i ograniczają się do adnotacji, generalnie Borys bo problem jest w tym, że fajnie stosować coś "NOWEGO" FAJNEGO bo to ułatwia, ale przez to że jest nowe, nigdy nie wiemy co moze powodować za problemy w przyszłości, których rozwiązań trzeba będzie szukać od korzeni, bo nie będą one znane.
komentarz 30 listopada 2020 przez Ehlert Ekspert (212,630 p.)

nie należy tego ograniczać do spirnga, bo ludzie widzą tylko JAVA-SPRING

Dto używałem zarówno w Symfony, jak i w Neście. Warto tu zaznaczyć że frameworki nic do tego nie miały. Wszystko ma swoje zastosowanie, ale w granicach rozsądku wink

Podobne pytania

0 głosów
1 odpowiedź 250 wizyt
0 głosów
1 odpowiedź 455 wizyt
pytanie zadane 30 kwietnia 2018 w Java przez Adrian Paź Obywatel (1,270 p.)
0 głosów
1 odpowiedź 407 wizyt
pytanie zadane 25 listopada 2021 w Python przez doskanoness Obywatel (1,240 p.)

92,453 zapytań

141,262 odpowiedzi

319,086 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...