Apakah ada praktik terbaik untuk menentukan penetapan getter dan setter? Tampaknya ada dua praktik:
- pasang getter / setter
- getter pertama, lalu setter (atau sebaliknya)
Untuk menjelaskan perbedaannya di sini adalah contoh Java dari pasangan pengambil / penyetel:
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;
}
}
Dan di sini adalah contoh Java getter pertama, kemudian setters:
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;
}
}
Saya pikir jenis pemesanan yang terakhir lebih jelas baik dalam kode dan diagram kelas tapi saya tidak tahu apakah itu cukup untuk mengesampingkan jenis pemesanan lainnya.
Jika Anda berada dalam tim, lakukan apa yang biasanya mereka lakukan. Kalau tidak, pilih saja yang Anda sukai. Pada skala pilihan desain penting ini mungkin di suatu tempat dekat "jempol mana yang harus saya gunakan untuk menekan tombol spasi?"
sumber
Itu juga bisa bergantung pada bahasanya. Di Jawa tidak ada keuntungan nyata untuk salah satu urutan, tetapi dalam C #, misalnya, Anda memiliki konsep "properti", yang mengelompokkan pengambil dan penyetel bersama-sama, jadi itu semacam menegakkan pemesanan itu. Dalam bahasa seperti C ++, di mana Anda mungkin menginginkan visibilitas berbeda pada getter vs setter (mis. Setter pribadi, pengambil publik), Anda mungkin akan melakukan yang sebaliknya, karena pengubah visibilitas diberikan satu kali untuk beberapa metode, daripada secara individual untuk masing-masing .
sumber
Sejauh yang saya tahu, tidak ada satu konvensi pun. Bagian Konvensi Java Java tentang organisasi file tidak secara eksplisit menyebutkan penempatan getter dan setter, tetapi dikatakan:
Ini tidak memberikan panduan apa pun - Saya dapat berpendapat bahwa penempatan mana pun memenuhi kriteria ini.
Sesuatu yang perlu dipertimbangkan adalah bahwa IDE modern memungkinkan Anda untuk memiliki lebih banyak tampilan abstrak dari struktur file Anda daripada sebagai komponen kode teks. Ini, ditambah dengan alat pencarian yang kuat, akan membuatnya mudah untuk menavigasi file dan menemukan metode yang sesuai bahkan dalam file besar.
Sebagai contoh, Eclipse menyediakan tampilan Outline yang memungkinkan Anda mengurutkan dan memfilter metode dan bidang dengan cara yang berbeda, dan menavigasi langsung ke tempat mereka berada dalam file. NetBeans memiliki fungsi yang serupa, dan saya menduga sebagian besar IDE lain juga melakukannya.
Satu-satunya saat ini mungkin penting adalah jika Anda membaca kode di luar IDE Anda. Contoh mungkin menggunakan alat peninjau kode eksternal atau melihat delta dari sistem kontrol versi Anda.
Solusi terbaik adalah dengan konsisten di seluruh file dalam suatu proyek. Temukan standar, dokumentasikan, dan patuhi.
sumber
Kelompokkan pengambil dan penyetel untuk satu bidang bersama, berpasangan.
Mengelompokkan semua getter bersama-sama dan semua setter bersama membuat sulit untuk menentukan bidang mana yang baru saja getter atau hanya setter.
Ketika saya membaca kode atau mencari fungsionalitas tertentu saya membayangkan sebuah kelas memiliki bidang, dengan masing-masing bidang memiliki pengambil dan penyetel. Tidak masuk akal bagi saya untuk kelas memiliki kelompok getter dan kelompok setter, masing-masing memiliki bidang.
sumber
Java IDE pernah dapat menghasilkan getter dan setter untuk Anda. Cukup gunakan fungsionalitas itu dan tinggalkan urutan metode-metode itu seperti IDE yang menciptakannya. Ini adalah kode yang dihasilkan, jangan disentuhnya secara tidak perlu.
sumber