Czy istnieje najlepsza praktyka dotycząca definiowania getterów i settererów w? Wydaje się, że istnieją dwie praktyki:
- pary getter / seter
- najpierw pobierający, a następnie ustawiający (lub na odwrót)
Aby podkreślić różnicę, oto przykład Java par getter / setter:
public class Foo {
private int var1,
var2,
var3;
public int getVar1() {
return var1;
}
public void setVar1(int var1) {
this.var1 = var1;
}
public int getVar2() {
return var2;
}
public void setVar2(int var2) {
this.var2 = var2;
}
public int getVar3() {
return var3;
}
public void setVar3(int var3) {
this.var3 = var3;
}
}
A oto przykład Javy dla pierwszych pobierających, a następnie ustawiających:
public class Foo {
private int var1,
var2,
var3;
public int getVar1() {
return var1;
}
public int getVar2() {
return var2;
}
public int getVar3() {
return var3;
}
public void setVar1(int var1) {
this.var1 = var1;
}
public void setVar2(int var2) {
this.var2 = var2;
}
public void setVar3(int var3) {
this.var3 = var3;
}
}
Myślę, że ten drugi rodzaj porządkowania jest jaśniejszy zarówno w kodzie, jak i na diagramach klas, ale nie wiem, czy to wystarczy, aby wykluczyć inny rodzaj porządkowania.
Jeśli jesteś w zespole, rób to, co zwykle. W przeciwnym razie wybierz ten, który bardziej Ci się podoba. W skali ważnych wyborów projektowych jest to prawdopodobnie gdzieś w pobliżu „jakim kciukiem powinienem użyć klawisza spacji?”
źródło
Może to również zależeć od języka. W Javie żadna kolejność nie ma żadnej realnej korzyści, ale na przykład w języku C # masz pojęcie „właściwości”, które grupują moduł pobierający i ustawiający razem, więc w pewien sposób wymusza to porządkowanie. W języku takim jak C ++, w którym możesz chcieć różnej widoczności na obiektach pobierających i ustawiających (np. Ustawiacz prywatny, obiekt pobierający publicznie), prawdopodobnie zrobiłbyś coś przeciwnego, ponieważ modyfikator widoczności jest podawany raz dla wielu metod, a nie osobno dla każdej z nich .
źródło
O ile mi wiadomo, nie ma jednej konwencji. Sekcja Oracle Java Code Conventions na temat organizacji plików nie wspomina wprost o rozmieszczeniu programów pobierających i ustawiających, ale mówi:
Nie zapewnia to żadnych wskazówek - mogę argumentować, że jedno z miejsc docelowych spełnia te kryteria.
Należy wziąć pod uwagę, że nowoczesne IDE pozwalają uzyskać więcej abstrakcyjnych widoków struktury plików niż jako składnik kodu tekstowego. To, w połączeniu z potężnymi narzędziami wyszukiwania, powinno ułatwić nawigację po plikach i znaleźć odpowiednie metody nawet w dużych plikach.
Na przykład Eclipse zapewnia widok konspektu, który pozwala sortować i filtrować metody i pola na różne sposoby oraz nawigować bezpośrednio do miejsca, w którym znajdują się w plikach. NetBeans miał podobną funkcjonalność i podejrzewam, że robi to również większość innych IDE.
Może to mieć znaczenie tylko wtedy, gdy czytasz kod poza swoim IDE. Przykładem może być użycie zewnętrznego narzędzia do przeglądania kodu lub przeglądanie delt z systemu kontroli wersji.
Najlepszym rozwiązaniem byłoby po prostu zachowanie spójności między plikami w projekcie. Znajdź standard, udokumentuj go i trzymaj się go.
źródło
Zgrupuj moduł pobierający i ustawiający dla pojedynczego pola razem, parami.
Grupowanie wszystkich pobierających razem i wszystkich ustawiających razem utrudnia określenie, które pola mają tylko pobierające, czy tylko ustawiające.
Kiedy czytam kod lub szukam konkretnej funkcjonalności, wyobrażam sobie, że klasa ma pola, z których każde ma getter i setter. Dla mnie nie ma sensu, aby klasa miała grupę pobierającą i ustawiającą, z których każda ma pola.
źródło
Ever Java IDE może generować dla ciebie gettery i settery. Wystarczy skorzystać z tej funkcji i pozostawić kolejność tych metod, jak IDE ją stworzyło. To jest generowany kod, nie dotykaj go niepotrzebnie.
źródło