Java SE 8 hadir dengan mekanisme baru untuk kencan, memperkenalkan LocalDate
, LocalTime
dan LocalDateTime
kelas - kelas untuk mewakili contoh waktu. Untuk memanipulasi instants tersebut, satu set metode yang diberikan: LocalDate.plusDays(...)
, LocalDate.minusDays(...)
dan sebagainya.
Saya selalu berpikir bahwa praktik yang baik adalah penamaan metode setelah kata kerja yang menggambarkan tujuan mereka, karena metode sebenarnya operasi yang akan dieksekusi, sesuatu yang akan melakukan tindakan. Hanya untuk menyebutkan, jika Anda mempertimbangkan kelas seperti StringBuilder
, misalnya, nama-nama metode yang append
, insert
, delete
...
Inilah sebabnya mengapa untuk saya itu tidak terdengar benar penamaan metode plusDays
bukan sumDays
, minusDays
bukan subtractDays
. Hanya saja saya merasa sangat menjengkelkan? Apa yang kamu pikirkan?
Satu-satunya alasan yang dapat saya pikirkan adalah bahwa tanggal adalah objek yang tidak dapat diubah, jadi dengan menelepon plusDays
Anda tidak menambahkan hari ke objek asli tetapi membuat yang baru dengan properti baru, tapi itu sangat halus.
sqrt
hanyalah sebuah kata yang diharapkan untuk dikenali dan diketahui oleh para pemrogram. Ngomong-ngomong, kata bahasa Inggrisnya adalah "akar kuadrat". Tetapi menyebutkan hal-hal yang sesuai dengan apa yang alami dalam bahasa Inggris tidak baik. Ambil kata "terlarang", misalnya, kata bahasa Inggris yang sangat bagus. Namun, jika seseorang memberi nama metode mereka, katakan isIllicit
saya pikir saya ingin merobek bola mata saya setiap kali saya melihat panggilan metode ini. Itu hanya terlihat mengerikan dan harus ada cara yang lebih baik untuk mengekspresikan ide.
sum
terdengar salah dalam konteks ini. Saya lebih suka .net AddDays
.
Math.addExact(1, 2)
karena Anda mengatakan "tambahkan 1 dan 2". tomorrow.plusDays(2)
karena Anda mengatakan "besok plus 2 hari". Jika addExact
anggota Integer
entah bagaimana itu akan terjadi 1.plusExact(2)
.
plusDays
untuk mengembalikan tanggal baru x jumlah hari ke depan, sedangkan addDays
saya mungkin berharap untuk bermutasi objek asli. Tapi itu hanya saya, saya tidak begitu akrab dengan Java.
sqrt
yang mengambil akar kuadrat. Memberi nama metode initakeSqrt
mungkin masuk akal sesuai dengan aturan Anda, tetapi memberi nama metode ini tidak akan membuat metode ini lebih mudah dibaca juga tidak akan membuatnya lebih jelas.