Bagaimana cara merujuk ke ByRef dan ByVal di label dropdown? [Tutup]

9

The MSDN halaman di ByRefdan ByValkata kunci tidak sangat membantu; kecuali saya entah bagaimana melewatkannya, mereka hanya disebut sebagai "kata kunci" di mana-mana.

Salah satu kontributor utama dari proyek Rubberduck sedang mengerjakan refactoring Field Encapsulate yang sangat keren , dan UI datang dengan sangat baik .. kecuali saya memiliki masalah dengan label di atas dropdown untuk ByRef/ ByVal, yang mengatakan "Aksesibilitas":

Dialog refactoring "Encapsulate Field" Rubberduck

Saya tidak suka "Aksesibilitas" karena saya menggunakannya di tempat lain untuk Public/ Private/ Friendpengubah akses yang rasanya lebih akurat.

Saya tidak ingin menggunakan "Pengubah" karena IMO itu hanya kependekan dari "pengubah akses".

Saya ingin label itu akurat, tetapi kosakata saya tampaknya kurang dan saya tidak tahu harus memanggil apa kata kunci ini.

Apa yang harus dikatakan label ini, agar akurat? Apa kata yang saya cari? "Keluarga kata kunci" apa yang dimiliki ByRef/ ByValdimiliki?

Mathieu Guindon
sumber
2
Seperti yang dikatakan salah satu komentar, seharusnya tidak ada sama sekali - ByRef untuk sebuah properti agak gila. Jika mungkin, itu jahat - memungkinkan Anda untuk mengubah variabel penelepon tanpa sepengetahuan mereka.
jmoreno
Banyak dokumentasi di "VB Universe", (jadi, tidak khusus VBA) tampaknya menyebut ini sebagai "Mekanisme Passing".
Damien_The_Unbeliever
@ jmoreno saya sepenuhnya setuju. Saya akan membuatnya ByValtanpa kemungkinan untuk mengubahnya ByRefselain mengedit kode yang dihasilkan secara manual, dan "masalah terpecahkan"! VBA dapat mengkompilasi sejumlah besar omong kosong jahat yang Anda tahu :-) tetap saja, saya suka akhirnya ada tempat online yang memberi nama pada kata kunci ini.
Mathieu Guindon

Jawaban:

14

Dalam hal ini, saya akan menggunakan "Pass As" (atau "Pass").

Anda memiliki aliran yang sangat cocok dengan penggunaan ini.

  • Nama variabel : foo
  • Lulus sebagai: ByVal / Lulus: ByRef

Ini sesuai dengan alur kerja Anda secara sempurna dan kebetulan adalah persis apa yang ditunjukkan oleh artikel yang Anda referensi.

Ketika Anda membaca opsi-opsi Anda, ia membaca dengan sempurna saat menggunakan 'Pass As' karena Anda cukup membaca judulnya dan memilih teks dengan tepat - "'Variable name' foo, nilai 'Pass As'."

Jika Anda ingin membuatnya sedikit lebih baik Anda bisa membuat opsi daftar Anda "Nilai" dan "Referensi" tergantung pada apakah audiens target Anda adalah pemrogram VBA atau pemrogram non-VBA yang mungkin sedikit kurang terbiasa dengan kata kunci ByVal dan ByRef.

Atau sebagai alternatif, ubah ke "Lulus:" dan jadikan "Dengan Referensi (ByRef)" dan "Dengan Nilai (ByVal)" di dropdown. Sepertinya dropdown Anda memiliki ruang untuk menampilkan semua teks ini. Atau hanya kata kunci ByRef / ByVal.

enderland
sumber
Saya akan menggunakan "Pass as ByVal" atau "Pass by value". "Lewati ByVal" terdengar aneh.
user253751
@ Imbib panggilan yang bagus!
enderland
3
Juga, Anda dapat mempertimbangkan tombol radio daripada dropdown, mengingat ada begitu sedikit pilihan.
Kyralessa
@ Kirralessa itulah yang saya katakan pada Mat dalam obrolan juga. Dan saya pikir itulah yang mereka lakukan untuk desain akhir :-)
enderland
5

Saya akan menggunakan salah satu dari 3 istilah ini untuk memberi label pilihan yang memilih:

  1. Semantik
  2. Lewat
  3. Pengubah parameter
Jimmy Hoffa
sumber
Saya suka "Semantik"
Mathieu Guindon
Saya suka "Parameter Modifier".
3

"Pass By Semantics" mungkin paling dekat dengan apa yang Anda cari.

Oded
sumber
argh mencuri topi pengiriman cepat saya! Eeeeevil!
Jimmy Hoffa
2
Saya sudah punya satu, dengan senang hati memberikan yang ini ...
Oded
3

Istilah yang paling tepat dan formal untuk ini adalah "Aliasing semantik".

Saat ByRefdigunakan, nama di dalam fungsi adalah alias untuk variabel penelepon - semua perubahan ke salah satu yang langsung terlihat ke yang lain. Dengan ByVal, nama di dalam fungsi adalah salinan berbeda dari variabel pemanggil (tentu saja, baik pemanggil dan salinan fungsi dapat merujuk ke objek yang sama, tetapi mereka berbeda dalam menetapkan ulang parameter di dalam fungsi tidak menetapkan kembali variabel pemanggil ).

Pilihannya adalah

  • Alias ​​( ByRef)
  • Salin ( ByVal)

Beberapa platform menambahkan kemungkinan ketiga, di mana aliasing variabel pemanggil dilakukan tetapi tidak diizinkan untuk lebih dari satu parameter ke objek tumpang tindih alias. (Gagasan di balik restrictkata kunci C , orang juga menemukan ini di IDL, di mana kata kunci atributnya unique). .NET tidak memiliki cara yang baik untuk menyandikan pengetahuan ini.

Ben Voigt
sumber
-1

Saya akan menyebutnya kategori "[argumen]".

Argumen memiliki nama, tipe dan kategori.

Lightness Races di Orbit
sumber