Saya telah melihat argumen untuk dan melawan Sistem Hungaria . Selama beberapa tahun saya telah mengerjakan proyek lawas yang menggunakan sistem ini dengan memberi nama setiap variabel, berfungsi dengan awalan dari tipe variabel mis (strName, intAge, btnSubmit dll) (Saya tahu awalan Apps Hongaria asli dengan jenis variabel, bukan tipe). Saya ingin proyek saya selanjutnya mengabaikannya sepenuhnya, tetapi saya merasa lebih sulit untuk menyebutkan hal-hal serupa secara unik tanpa menggunakan itu.
Katakanlah saya memiliki formulir web untuk mengumpulkan alamat email dan menyimpannya dalam tabel database, dan tombol yang memanggil fungsi yang menyimpan alamat ke db.
Jika saya menggunakan notasi gaya Hungaria, saya bisa menyebut kotak txtEmail
tombol btnEmail
dan nilai yang terkandung dalam kotak teks strEmail
. Saya kemudian dapat menggunakan fungsi storeEmail(strEmail)
untuk menyimpan email. Saya memiliki konvensi yang jelas di sini, jelas apa masing-masing variabel.
Apa yang akan menjadi praktik terbaik untuk penamaan variabel-variabel ini
- tanpa menggunakan Sistem Hungaria,
- tanpa membuatnya terlalu panjang atau membingungkan
- dan dengan konvensi yang jelas untuk digunakan di seluruh proyek saya?
Jawaban:
Poin terakhir Anda adalah yang paling penting - apa pun yang Anda lakukan, Anda harus konsisten di seluruh proyek dan dengan kolega Anda. Ada dua cara utama untuk mencapai konsistensi dan jika mungkin Anda harus menggunakan keduanya. Pertama-tama gunakan alat untuk memeriksa konvensi penamaan pada waktu membangun. Di dunia .Net, StyleCop akan menjadi contoh yang baik untuk alat semacam itu. Cara kedua untuk mendapatkan konsistensi adalah memiliki ulasan sejawat dari semua kode, sehingga Anda semua bisa terus mengawasi.
Dua poin Anda yang lain sepertinya menanyakan alternatif. Saya tidak yakin Anda membutuhkan alternatif; titik tentang Hongaria tidak lagi menjadi populer adalah bahwa dulu digunakan untuk mendeskripsikan jenis ketika sistem jenis dan alat sedikit, harus kita katakan, kurang ketat. Yaitu jika Anda memprogram dalam C dan melewati pointer di sekitar satu-satunya cara untuk melacak tipe adalah dengan menggunakan bahasa Hongaria. Sekarang, jika Anda menggunakan bahasa seperti C # atau Java, Anda tidak akan menggunakan pointer (atau sangat jarang), sehingga kebutuhan untuk segala jenis bahasa Hongaria hilang. Juga, IDE modern memungkinkan Anda melihat tipe dengan sangat mudah dengan mengarahkan kursor ke variabel atau paling buruk menggunakan jalan pintas untuk melihat deklarasi asli. Jadi, saya rasa Anda tidak perlu notasi apa pun, cukup beri nama variabelnya sesuai dengan fungsinya. Jika itu alamat email, gunakan "email" atau "
sumber
Saat berhadapan dengan formulir web / formulir Windows / hal-hal grafis lainnya, masuk akal untuk menggunakan Sistem Hongaria karena Anda dapat memiliki kontrol yang sangat terikat bersama-sama — misalnya, kotak teks dan label yang menyatu; Anda mungkin menamainya
txtEmail
danlblEmail
membedakannya. Dalam pengalaman saya, ini biasa dan sebenarnya berguna.Tetapi di belakang kode Anda, penamaan seperti ini tidak perlu. Jika Anda memiliki variabel tipe
string
yang digunakan untuk menyimpan email, cukup beri namaemail
. Jika, karena suatu alasan, Anda menjadi bingung, sebagian besar IDE seharusnya memungkinkan Anda untuk mengarahkan kursornya dan melihat tipenya. (Idealnya, dalam hal-hal OO, itu mungkin atribut dari beberapa objek, danuser.Email
bahkan lebih jelas.)Saya pikir jika Anda memiliki lebih dari satu objek yang dinyatakan dalam kode Anda yang bukan kontrol GUI yang bisa dinamai
email
, ada sesuatu yang salah dengan desain Anda.sumber
Apa yang membuat variabel "terlalu panjang"?
Alih-alih
txtEmail
,btnEmail
Anda bisa menggunakanUserEmailText
,UserEmailButton
, danAdminEmailText
,AdminEmailButton
Masalah dengan ini adalah Anda mungkin mulai merasa bahwa variabel mulai menjadi panjang:
AdminEmailIsValid
mulai batas pada berapa lama saya akan membiarkan variabel.Selain itu, Anda mungkin mulai memperhatikan bahwa Anda menggunakan kembali satu set variabel, dan satu set operasi pada variabel itu. Untuk itulah OOP dirancang . Alih-alih seperangkat variabel, buat objek generik:
Kemudian Anda bisa instantiate variabel baru sebagai kelas, dan menggunakan notasi titik yang sama untuk mengakses data Anda:
Tentu saja, ini ditargetkan ke bahasa-bahasa yang menggunakan paradigma OOP, tetapi mayoritas bahasa pengembangan web populer berorientasi objek, atau memungkinkan kode berorientasi objek (PHP, Python, C #, C ++, Java ++, Java, JavaScript, ActionScript, dll. ).
sumber
UserEmailText
danAdminEmailText
khususnya). Saya biasanya tipe akhiran karena cocok untuk pindah ke kelasUserEmailText
->UserEmail.text
->User.email.text
tergantung pada berapa banyak abstraksi / fungsionalitas yang diperlukan.