Dua Chapter terakhir membuat kita fasih menulis int harga; dan int d{};, tetapi belum menyentuh pertanyaan yang setiap hari lebih menentukan: nama seperti apa yang boleh dan layak kita pilih? Compiler memegang seperangkat aturan keras — nama yang melanggar langsung ditolak pada saat kompilasi — sementara pembaca kode manusia memegang aturan lunak berupa konvensi penamaan. Keduanya sama pentingnya: nama yang sah membuat program bisa dikompilasi, dan nama yang deskriptif membuat program bisa dipelihara. Chapter ini membahas keduanya, dimulai dari syarat teknis, lalu pesan error nyata untuk nama ilegal, dan ditutup dengan konvensi penamaan yang dipakai di dunia kerja.
Syarat Identifier yang Sah #
Nama variabel secara resmi disebut identifier, dan standar C++ menetapkan syarat berikut:
- Karakter yang diizinkan: huruf, angka, dan garis bawah (
_). Hurufnya tidak terbatas A-Z; aksara lain seperti Unicode juga sah, tetapi untuk kode kerja sehari-hari kita tetap pada huruf Latin. - Tidak boleh diawali angka:
nilai2sah,2nilaitidak. Compiler memakai aturan ini untuk membedakan nama dari angka. - Tidak boleh memakai kata kunci (keyword) seperti
int,double, ataureturn— kata-kata itu sudah dimiliki bahasa. - Case-sensitive:
jumlah,Jumlah, danJUMLAHadalah tiga variabel yang berbeda. Kesalahan kapitalisasi adalah sumber bug klasik pemula. - Tidak boleh memakai nama tercadang: identifier yang diawali garis bawah lalu huruf kapital (misal
_Nama) atau memuat dua garis bawah (__data) dicadangkan untuk compiler dan pustaka standar; nama di dalamstd::juga sebaiknya tidak dijamah.
Kata kunci yang paling sering berpapasan dengan kita antara lain: int, short, long, double, float, char, bool, void, const, constexpr, auto, unsigned, signed, sizeof, true, false, if, else, for, while, return, struct, class, namespace, using, template, new, delete, static, dan this. Daftar lengkapnya panjang dan bertambah tiap standar; halaman keywords
cppreference mencatat semuanya per versi C++.
Ketika Nama Ditolak Compiler #
Aturan di atas terasa abstrak sampai kita melihat compiler menolaknya. Berikut tiga pelanggaran sekaligus — diawali angka, memakai kata kunci, dan mengandung spasi:
int main() {
int 2nilai = 10; // diawali angka
int double = 5; // memakai keyword
int harga total = 1; // mengandung spasi
return 0;
}Hasil kompilasi dengan g++ memuat tiga pesan error, satu untuk tiap pelanggaran:
nama-salah.cpp: In function ‘int main()’:
nama-salah.cpp:2:9: error: expected unqualified-id before numeric constant
2 | int 2nilai = 10; // diawali angka
| ^~~~~~
nama-salah.cpp:3:16: error: expected unqualified-id before ‘=’ token
3 | int double = 5; // memakai keyword
| ^
nama-salah.cpp:4:15: error: expected initializer before ‘total’
4 | int harga total = 1; // mengandung spasi
| ^~~~~Pesan-pesan itu tidak selalu mengatakan “nama Anda ilegal” secara gamblang; compiler melaporkan gejalanya dari sudut pandang parser. Untuk 2nilai, parser membaca token angka 2 di posisi yang seharusnya nama, sehingga ia mengeluh expected unqualified-id before numeric constant. Untuk double, kata kunci itu sudah “dimiliki” bahasa sehingga parser tersandung token = sesudahnya. Pola yang perlu diambil: ketika muncul pesan error yang tidak jelas di baris deklarasi, periksa dulu ejaan nama variabelnya — apakah diawali angka, memuat karakter aneh, atau menabrak kata kunci.
Konvensi Penamaan: camelCase dan snake_case #
Syarat keabsahan hanya membuat nama diterima compiler; konvensi penamaan membuat nama enak dibaca manusia. Dua gaya mendominasi kode C++:
| Aspek | camelCase | snake_case |
|---|---|---|
| Bentuk | totalDetik, hargaSatuan | total_detik, harga_satuan |
| Ciri | kata kedua dst. diawali huruf kapital | huruf kecil semua, dipisah _ |
| Umum di | kode aplikasi, banyak guideline modern | pustaka standar C++, kode C, banyak project open source |
| Contoh dari pustaka standar | (langka; standar memilih snake_case) | push_back, numeric_limits |
Satu catatan lucu: pustaka standar C++ sendiri menulis std::push_back dan std::numeric_limits dalam snake_case, sementara sebagian besar guideline aplikasi modern memilih camelCase untuk variabel dan fungsi. Konvensi lain yang keduanya sepakati: konstanta yang tak berubah sering ditulis kNavigasi (prefiks k) atau NAMA_BESAR_SEMUA, dan nama class diawali huruf kapital — topik yang menyusul di Section Pemrograman Berorientasi Objek. Yang paling penting bukan memilih gaya mana, melainkan konsisten: satu project, satu gaya.
Program kecil berikut menampilkan kedua gaya hidup berdampingan agar Anda melihat perbedaannya secara nyata:
#include <iostream>
int main() {
// gaya camelCase: kata kedua dan seterusnya diawali huruf kapital
int detikPerHari = 86400;
int jumlahHari = 7;
int totalDetik = detikPerHari * jumlahHari;
// gaya snake_case: huruf kecil semua, kata dipisah garis bawah
double harga_satuan = 2500.0;
double jumlah_porsi = 4.0;
double total_bayar = harga_satuan * jumlah_porsi;
std::cout << "Total detik dalam seminggu : " << totalDetik << "\n";
std::cout << "Total bayar makan : " << total_bayar << "\n";
return 0;
}Output yang Dihasilkan:
Total detik dalam seminggu : 604800
Total bayar makan : 10000Dalam kode sungguhan, jangan campur dua gaya seperti di atas; contoh ini sengaja memamerkan keduanya agar perbedaannya terlihat dalam satu pandang. Pilih satu gaya untuk seluruh project — atau ikuti gaya yang sudah ada bila Anda bergabung dengan tim — lalu pertahankan sampai selesai.
Nama yang Deskriptif #
Syarat terakhir tidak tertulis di standar: nama harus menggambarkan isinya. Bandingkan int x = 86400; dengan int detikPerHari = 86400;. Keduanya sah dan berjalan sama cepat, tetapi hanya yang kedua yang membuat pembaca langsung paham tanpa menelusuri kode lain. Nama yang buruk adalah utang: tiga bulan kemudian, orang yang menebak arti x biasanya adalah kita sendiri. Sebaliknya, nama yang baik membuat komentar menjadi tidak perlu — total_bayar sudah bercerita sendiri.
Kapan pun ragu, perpanjang sedikit nama itu. jumlah boleh, tetapi jumlahPeserta atau jumlahBarisFile jauh lebih sulit disalahartikan. Singkatan seperti jml atau hrg hemat tiga huruf, tetapi biayanya dibayar setiap kali orang lain (atau Anda di masa depan) membaca kode itu. Dengan fondasi tipe dan nama yang sudah rapi, kita siap menginventarisasi semua tipe dasar yang tersedia di C++ — peta tipe fundamental di Chapter berikutnya.
Rujukan resmi untuk topik Chapter ini: identifiers dan keywords di cppreference.