Memberi nama metode "lakukan X jika perlu"

23

Apa cara yang baik untuk memberi nama metode yang memeriksa apakah X perlu dilakukan, dan apakah X jika perlu?

Misalnya, bagaimana memberi nama metode yang memperbarui daftar pengguna jika pengguna baru telah masuk? UpdateListIfNeededtampaknya terlalu lama, sementara sederhana UpdateListmenyiratkan operasi yang mungkin mahal dan tidak perlu dilakukan setiap saat. EnsureListUpdatedadalah varian juga.

C # memiliki bool TryXXX(args, out result)pola (misalnya int.TryParse(str, out num)) untuk memeriksa apakah X mungkin dan melakukannya, tetapi itu agak berbeda.

dbkk
sumber
1
Hanya satu titik rekomendasi, metode seperti ini, meskipun bermaksud baik, harus dibuat dengan hati-hati. Sepanjang jalan mereka cenderung dibumbui ke dalam kode yang tidak terkait dengan kedok "berjaga-jaga" atau "menambahkan panggilan ke dalam X () memperbaiki bug, tapi saya tidak yakin mengapa". Jika Anda memiliki disiplin untuk hanya menelepon RefreshUserList()selama LoginUser()dan LogoutUser(), dan tidak selama, katakanlah GetUser()(di mana daftar tersebut harus sudah mutakhir), maka tentu saja saran di bawah ini berlaku.
Kevin McCormick

Jawaban:

25

Saya cenderung menggunakan Ensure. Itu membawa arti memastikan bahwa sesuatu diurus, namun itu perlu dilakukan. Jika sudah baik-baik saja, periksa saja dan kita selesai. Kalau tidak, lakukanlah. Either way, hanya memastikan bahwa itu dilakukan .

Mason Wheeler
sumber
13

Preferensi saya adalah UpdateList. Jika tidak ada yang perlu dilakukan, ya sudah. Pengeluaran harus selalu diminimalkan, jadi jika UpdateListmelakukan lebih dari yang diperlukan, ada yang salah dalam implementasinya.

Pada dasarnya itu adalah kata kerja yang memberi tahu Anda apa yang harus dilakukan metode ini. CalculateXharus selalu menghitung ulang X. GetYharus selalu mengembalikan Y, tetapi hanya melakukan pekerjaan mengambilnya jika perlu. Demikian juga, UpdateZmeminta pembaruan Z dengan asumsi itu dilakukan dengan cara seefisien mungkin.

Matt S
sumber
2

Panggil aku "Mungkin"

Terpilih dari cuplikan Haskell yang pernah saya lihat, coba

UpdateListMaybe();
Mark Canlas
sumber
2
Saya kira jika saya memahami Haskell lebih baik, ini mungkin lebih masuk akal. Konsekuensi: Jika ini digunakan dalam bahasa selain Haskell, itu hanya akan dipahami oleh mereka yang tahu Haskell.
Robert Harvey
2
Enam tahun kemudian, saya seorang programmer yang berbeda, dengan sedikit lebih banyak pengetahuan tentang hal-hal Haskell. Saya tidak lagi mendukung jawaban ini, haha. Saya kira ide saya pada saat itu adalah menggunakan kata "mungkin" untuk menandakan bahwa fungsi tersebut menangani semacam opsionalitas. Saya masih melakukan itu kadang-kadang (misalnya Opsi [A] => B disebut maybeToB)
Mark Canlas