Di Panduan penamaan apa yang Anda ikuti? , kata penulis:
Saya juga lebih suka kode menggunakan notasi hungaria dari Charles Simonyi.
Saya telah menjalankan beberapa programmer yang masih lebih suka menggunakan bahasa Hongaria, sebagian besar dari rasa Petzold / Sistem Hungaria. Pikirkan dwLength = strlen(lpszName)
.
Saya sudah membaca Making Wrong Code Look Wrong , dan saya mengerti alasan untuk Apps Hungarian, di mana informasi tipe domain termasuk dalam nama variabel. Tapi saya tidak mengerti nilai dari penyesuaian jenis kompiler dengan nama.
Mengapa programmer masih tetap menggunakan gaya notasi ini? Apakah ini hanya kelembaman? Apakah ada manfaat yang melebihi penurunan keterbacaan? Apakah orang hanya belajar mengabaikan dekorator ketika membaca kode, dan jika demikian, bagaimana mereka terus menambah nilai?
EDIT: Banyak jawaban yang menjelaskan sejarah, atau mengapa itu tidak lagi relevan, yang keduanya tercakup dalam artikel yang saya kutip.
Saya benar-benar ingin mendengar dari siapa pun di luar sana yang masih menggunakannya. Mengapa Anda menggunakan itu? Apakah ini sesuai standar Anda? Apakah Anda akan menggunakannya jika tidak diperlukan? Apakah Anda akan menggunakannya pada proyek baru? Apa yang Anda lihat sebagai keuntungannya?
sumber
Jawaban:
Saat ini saya masih menggunakan bahasa Hongaria untuk tiga alasan , dengan bijaksana menghindarinya untuk hal lain:
Saya tentu tidak ingin mengatur ide-ide saya sebagai praktik terbaik, tetapi saya mengikuti aturan ini karena pengalaman memberi tahu saya bahwa kadang-kadang penggunaan kode tunjangan Hongaria dapat dipertahankan tetapi biayanya kecil. Yang mengatakan, saya terus-menerus meninjau praktik saya sendiri, jadi mungkin melakukan sesuatu yang berbeda ketika ide-ide saya berkembang.
Memperbarui:
Saya baru saja membaca artikel berwawasan oleh Eric Lippert, menjelaskan bagaimana Hongaria dapat membantu membuat kode yang salah terlihat salah. Layak dibaca.
sumber
tssb
atau atsddi
? Ya, mereka ada). Singkatan juga memiliki masalah keseragaman,TextBox
karena mungkin ada ketidakkonsistenan tentang apakah itutb
atautxt
(saya pribadi melihat seorang 'senior' yang menggunakan keduanya pada satu jendela). Untuk 3 saya drop Hungaria ketika variabel mencapai tipe yang dimaksudkan akhir (misalnya saya akan menggunakanvalue
danstrValue
dalam contoh Anda).Saya bukan penggemar menggunakan notasi hungaria tetapi berpikir seperti ini:
Tidak bayangkan sebaliknya, di mana setiap elemen memiliki namanya sendiri. Mungkin lebih lambat bagi Anda untuk menemukan ke mana Anda ingin pergi, bukan?
Hal yang sama berlaku untuk ddl ketika kita ingin merujuk ke DropDownList, lebih mudah atau tidak? :)
Orang tidak akan menghabiskan banyak waktu untuk menemukan di mana elemen ini.
Penggunaan awalan tidak dapat digunakan untuk kompiler bahasa modern seperti C #, tetapi dapat digunakan (dapat dibaca) untuk manusia.
sumber
Aplikasi Hungarian (tag untuk menunjukkan sifat semantik dari objek yang tidak dapat diekspresikan melalui sistem tipe) adalah cara yang masuk akal untuk menangani beberapa kesalahan umum ketika menggunakan bahasa yang diketik dengan lemah pada awal 1980-an. Mereka melayani sedikit tujuan dalam bahasa yang sangat diketik saat ini.
Sistem Hongaria (tag untuk menunjukkan tipe objek secara berlebihan) tidak pernah melayani tujuan apa pun kecuali untuk memaksakan penampilan seragam yang dangkal pada basis kode. Itu dibuat dan disebarkan oleh manajer non-teknis, dan programmer yang tidak berpengalaman, yang salah paham maksud Apps Hungarian, dan percaya bahwa kualitas kode dapat ditingkatkan dengan pedoman pengkodean yang kompleks.
Kedua gaya berasal dari Microsoft. Saat ini, konvensi penamaan Microsoft dengan tegas mengatakan "Jangan gunakan notasi Hongaria."
sumber
Jika Anda menemukan sistem awalan yang tepat, Anda dapat menyebarkan keausan kunci Anda, yang akan mengurangi pengeluaran untuk keyboard pengganti.
Saya kira saya bisa mengembangkan ini. Saya telah menggunakan SH di tempat kerja saya untuk yang terakhir, oh, sepuluh tahun atau lebih (karena itu dalam Standar kami). Itu tidak pernah membantu memecahkan masalah.
Di sisi lain, saya telah menggunakan variabel tanpa hiasan tapi nama baik dalam 'kode rumah' saya selama hampir sama. Saya tidak pernah melewatkan SH.
Di kedua tempat, saya memiliki kode protokol tertulis yang memerlukan tipe primitif ukuran tetap. Ini adalah kasus penggunaan paling bermanfaat yang bisa saya pikirkan untuk SH. Itu tidak membantu bahwa saya bisa tahu ketika ditulis dengan SH, dan itu tidak merintangi saya ketika ditulis tanpa SH.
Jadi, sebagai kesimpulan, satu-satunya perbedaan yang bisa saya lihat adalah keausan pada keyboard Anda.
sumber
Saya sebenarnya mulai menggunakan SH dalam kode baru yang saya tulis bulan ini.
Tugas saya melibatkan penulisan ulang beberapa kode Perl di JS sehingga dapat dipindahkan ke sisi klien dari aplikasi web kami. Dalam Perl, SH umumnya tidak diperlukan karena sigils ($ string, @array,% hash).
Dalam JavaScript, saya menemukan SH sangat berharga untuk melacak tipe struktur data. Sebagai contoh,
Ini mengambil objek dari array objek menggunakan indeks integer. Mematuhi konvensi ini menghemat waktu untuk mencari tipe data. Plus, Anda dapat membebani nama variabel singkat (
oRow
vs.iRow
).tl; dr: SH bisa menjadi luar biasa ketika Anda memiliki kode kompleks dalam bahasa yang diketik dengan lemah. Tetapi jika IDE Anda dapat melacak tipe, pilih itu.
sumber
Saya juga ingin tahu alasannya. Kami tahu mengapa mereka menggunakannya di masa lalu: kurangnya dukungan IDE untuk informasi jenis. Tapi sekarang? Sederhananya, saya pikir itu adalah tradisi. Kode C ++ selalu terlihat seperti ini, jadi mengapa harus mengubahnya? Selain itu, ketika Anda membangun di atas kode sebelumnya yang menggunakan notasi Hungaria, itu akan terlihat sangat aneh ketika Anda tiba-tiba berhenti menggunakan itu ...
sumber
Notasi Sistem Hungaria sebenarnya sedikit sombong, kesalahpahaman dari istilah 'tipe'. Pengembang sistem menganggapnya secara harfiah sebagai jenis kompiler (kata, byte, string, ...) sebagai lawan dari tipe domain aplikasi (baris indeks, indeks kolom, ...).
Tapi saya kira setiap pengembang melewati beberapa fase gaya yang tampak seperti ide bagus pada saat itu (dan tipe awalan sepertinya ide yang bagus untuk pemula) sebelum jatuh ke dalam perangkap (mengubah tipe, membuat awalan baru yang bermakna, dll). Jadi saya kira ada inersia: dari pengembang yang tidak menjadi lebih baik dan menyadari mengapa itu pilihan yang buruk, dari pengembang terjebak dengan standar pengkodean yang mengamanatkan praktik dan dari orang yang menggunakan
<windows.h>
. Akan terlalu mahal bagi Microsoft untuk mengubah untuk menyingkirkan notasi awalan (yang salah di banyak tempat: WPARAM?).sumber
Ada satu hal yang hilang dari orang Hongaria. Notasi Hungaria benar-benar berfungsi BESAR dengan pelengkapan otomatis.
Katakanlah Anda memiliki variabel, dan namanya intHeightOfMonster.
Katakan Anda lupa nama variabel
Bisa jadi tinggi dari Monster atau MonsterHeight atau MeasurementMonsterHeight
Anda ingin dapat mengetik surat dan mendapatkan saran pelengkapan otomatis untuk Anda beberapa nama variabel.
Mengetahui bahwa heightOfMonster adalah sebuah int, Anda cukup mengetikkan i dan voila.
Menghemat waktu.
sumber