Pustaka JavaScript seperti jQuery, menggabungkan 'getter' dan 'setter' dalam antarmuka pemrograman misalnya:
$('element').css({'color','blue'});
akan mengatur warna atau
$('element').css();
akan mendapatkan css untuk sebuah elemen.
Apakah ada nama untuk pola seperti itu dan apakah itu praktik yang baik untuk digunakan dalam aplikasi?
sumber
Ini disebut "metode overloading" dalam bahasa OO atau "overload fungsi" dalam bahasa non-OO.
Apakah itu praktik yang baik atau tidak merupakan topik perdebatan yang hampir sama banyaknya dengan getter / setter vs anggota publik. Orang-orang di sisi pro dan kontra mungkin memotong gigi mereka pada bahasa yang memiliki fitur ini atau tidak dan diatur dalam cara mereka. Saya menggunakannya dan menyukai latihan ini karena sejumlah alasan:
get
atauset
ke nama metode menambah verbositas.int
dan satu untukdouble
), mengubah jenis LHS dari suatu tugas (int x = foo.bar()
vs.double x = foo.bar()
) tidak memerlukan perubahan kode (barAsInteger()
vsbarAsDouble()
) ke sisi kanan jika kelas menyediakan keduanya. Sisi buruknya adalah kadang-kadang sulit untuk mengetahui dengan tepat metode apa yang dipanggil hanya dengan melihat kode.sumber
Karena JavaScript tidak memiliki properti aktual (di mana pengaturan nilai sebenarnya dapat mengeksekusi kode), derai adalah yang mengimplementasikan idiom properti. (Bahkan jika Anda menyebutnya sesuatu yang lain.)
Jadi, dalam bahasa yang mengimplementasikan properti nyata, Anda akan melakukan ini sebagai gantinya:
Jika Anda menggunakan pola JavaScript dalam bahasa yang menangani properti, Anda akan melakukan sesuatu yang tidak normal. Itu kemungkinan bukan ide yang bagus. Tangani properti seperti bahasa yang dimaksudkan untuk menanganinya, jadi Anda tidak membingungkan orang lain yang bekerja dengan Anda.
sumber
Saya pikir Anda sedang mencari
properties
sumber
person.salary('10000')
atauperson.salary()
atau serupa.Saya agak menentang hal itu karena alasan sederhana: Kelas, Metode atau Fungsi seharusnya hanya melakukan satu hal - menurut saya, dan menggabungkan
getter
dansetter
metode akan melanggar aturan itu. Hasilnya:return
nilai fungsi bervariasi berdasarkan jika getter atau setter blok dijalankan. Yang satu ini hanya dapat membawa Anda ke mimpi buruk rawatan. Metode Anda harus mengembalikan hanya satu jenis data / objek dalam kasus apa pun - atau mengembalikannull
,false
atau melemparexception
jika terjadi kesalahan.Blrfl
jawaban.sumber