Rabu, 19 Oktober 2016

Hungarian Notation dan Windows API

Ada yang programmer Windows?
Wah, banyak juga yang angkat tangan ya..

Sering berkecimpung dengan Windows API, kalian sudah tahu belum, kenapa banyak kode ditulis dengan prefix/awalan aneh; seperti b, w, dw, l, lpc, n,.... Contonya nCount, atau dwFlags. Saat saya mulai mengenal windows API, saya bertanya-tanya. Betapa kurang kerjaannya mereka. Kenapa harus diberi nama LPCSTR, bukan STR saja. Dan kenapa harus ditambah embel-embel b pada nama bStatus?

Ya, memang, prefix tersebut menunjukkan tipe sebuah data yang akan digunakan. Sering kali, prefix ini ditemukan sebagai prefix untuk pemberian nama parameter di Windows. Kalau kalian masih bingung alasannya kenapa. Maka, tentu saja jawabannya adalah untuk mempermudah pemrograman.

Dulu, di zaman 80 - 90 an, programming masih pakai text editor. Jadi, gak ada tuh, popup untuk code completition seperti sekarang. Apalagi, dulu kapasitas dan harga disket masih mahal, jadi kalau mau bikin dokumentasi harus efisien. Mungkin juga karena itu, tipe data tidak ikut ditulis dalam dokumentasi. Sebagai gantinya, setiap parameter diberi nama dengan sebuah prefix. misalnya bStatus, artinya data bernama status dengan tipe boolean.

Hmm, masuk akal juga kan?

Prefix yang sering kita temukan semacam ini, biasa disebut sebagai Hungarian Notation. Pencetusnya adalah pak Charles Simonyi. Nama Hungarian sendiri dipakai karena Simonyi berdarah asal Hungarian. Awalnya, hungarian notation mulai dipakai saat ia bekerja di Xerox. Setelah ia pindah ke Microsoft, gaya koding ini akhirnya diikuti oleh programmer lain. Sederhana, tapi begitu banyak sejarah yang berlalu dari penulisan embel-embel itu tadi. Hahaha

Sebelum saya menutup tulisan ini; berikut saya sertakan referensi untuk beberapa prefix Hungarian Notation di Windows.
ch - character
s  - string
sz - null terminated string
w  - word
dw - double Word (sama dengan long)
l  - long
ll - long long (quad word; 2 x long = 8 bytes)
n  - number
fn - function
b  - byte atau boolean
c  - count
p  - pointer
lp - long pointer (pointer ke data bertipe long)


Dan, inilah jawaban yang di cari-cari dari dulu...
lpc - const char pointer (const char *)

Sebenarnya, masih banyak prefix yang diterapkan dalam Hungarin Notations-nya Microsoft. Sisanya, bisa anda cari sendiri di internet.
Load disqus comments

0 comments