05. Penamaan dan Dekomposisi
Bab terakhir yang bisa dikerjakan di atas kertas. Bab ini membahas dua kebiasaan yang membedakan kode yang menyebalkan dari kode yang hampir bisa dibaca sendiri: nama yang baik, dan memecah pekerjaan besar menjadi langkah-langkah kecil. Keduanya tidak butuh komputer, dan keduanya membuat sisa buku ini lebih mudah ditulis dan diperbaiki.
Nama adalah pesan untuk pembaca berikutnya
Komputer tidak peduli kamu menamakan sesuatu dengan apa.
x, q7, dan monsters_left semua
bekerja sama persis. Nama itu untuk orang berikutnya yang membaca kode —
biasanya kamu sendiri, seminggu kemudian, yang sudah lupa
segalanya.
Baca dua program ini. Keduanya melakukan hal yang persis sama.
local x = 60
local y = 8
local z = x * y
print(z)local minutes_per_hour = 60
local hours = 8
local total_minutes = minutes_per_hour * hours
print(total_minutes)Keduanya mencetak 480, tapi hanya yang kedua yang
memberitahu kamu apa arti 480 itu. Yang pertama membuat kamu
jadi detektif; yang kedua membuat kamu jadi pembaca. Waktu ekstra untuk
mengetik nama yang lebih panjang terbayar lunas begitu kamu kembali dan
langsung paham isinya.
Apa yang membuat nama itu bagus
- Bilang apa yang disimpan, bukan tipenya.
player_namelebih baik daristring1;coins_leftlebih baik darinumber_thing. - Lebih panjang tidak masalah kalau lebih jelas.
seconds_until_respawnadalah nama yang bagus. Tidak ada yang pernah menggerutu karena kode terlalu mudah dibaca. - Sesuaikan dengan ukuran tugasnya. Counter yang
hidup dua baris bisa saja bernama
i. Nilai yang dipakai di seluruh program layak mendapat nama yang benar. - Konsisten. Kalau satu skor dinamai
player_score, jangan namai skor berikutnyaenemyScore. Pilih satu gaya dan pakai terus di dalam satu file.
Kamu belum perlu tahu aturan Lua soal penamaan sekarang — itu dibahas di bab variabel. Untuk sekarang, bangun kebiasaannya: sebelum menulis sebuah nama, tanya diri sendiri apakah orang asing tahu apa yang disimpan di sini?
Dekomposisi: pekerjaan besar jadi langkah-langkah kecil
Satu program utuh sekaligus itu menakutkan. Daftar langkah-langkah kecil tidak. Memecah tugas besar menjadi potongan-potongan kecil yang bisa dipahami secara terpisah disebut dekomposisi, dan itulah cara setiap program nyata dibangun.
Kamu sudah melakukan ini di Bab 02 tanpa kata kerennya: diagram alir adalah tugas besar yang dipecah menjadi langkah-langkah satu kotak. Ini dalam tulisan biasa. Misalkan tugasnya adalah "sambut pemain dan tampilkan statistik mereka":
- Tanya nama pemain.
- Tanya level pemain.
- Tentukan gelar berdasarkan level (misalnya "Pemula" atau "Pahlawan").
- Cetak baris sambutan.
- Cetak baris statistik.
Setiap langkah cukup kecil untuk dibayangkan sepenuhnya. Tidak ada satupun yang merupakan "program utuh", hal menakutkan yang kamu mulai tadi. Nanti, beberapa langkah ini masing-masing akan menjadi fungsi pendek dengan namanya sendiri — dan langkah yang diberi nama dengan baik sudah setengah jalan menuju fungsi yang diberi nama dengan baik.
Memberi nama pada langkah-langkah
Dekomposisi yang baik dan penamaan yang baik adalah kemampuan yang sama, diarahkan ke hal yang berbeda. Memberi nama sebuah langkah sebenarnya sama dengan memberi nama fungsi yang akan dibuat nanti. Bandingkan:
- Langkah yang samar: "lakukan hal-hal dengan angka-angka itu".
- Langkah yang diberi nama: "hitung total skor" → nanti,
total_score().
Kalau kamu tidak bisa memberi nama sebuah langkah dalam frasa singkat, kemungkinan besar itu sebenarnya dua langkah yang berpura-pura jadi satu. Pecah terus sampai setiap langkah punya nama yang jelas dan singkat.
Pikirkan game kecil yang kamu suka. Di kertas, tulis satu kalimat yang mendeskripsikan keseluruhan hal yang dilakukan game itu. Lalu pecah kalimat itu menjadi tiga sampai enam langkah yang diberi nama. Perhatikan bagaimana setiap langkah mudah dipikirkan, bahkan ketika keseluruhannya tidak.
Seberapa kecil itu cukup kecil?
Sebuah langkah cukup kecil ketika kamu bisa menampung semuanya di kepala dan memberinya nama dengan jelas. Kalau masih terasa kabur, pecah lagi. Begitu kamu sampai di "tambahkan 1 ke skor", berhenti — kamu sudah cukup jauh. Tujuannya adalah langkah-langkah yang bisa kamu percaya, bukan langkah-langkah sebanyak mungkin.
PR
PR terakhir yang dikerjakan di kertas dalam buku ini. Setelah ini, kamu instal Lua dan menulis kode sungguhan.
Soal 1 — Ganti nama yang misterius
Ini adalah program dengan nama yang sengaja dibuat tidak berguna. Kamu tidak bisa menjalankannya, tapi kamu bisa membacanya. Di kertas, tulis ulang keempat nama itu agar orang asing bisa mengerti apa yang disimpan masing-masing. (Petunjuk: matematikanya adalah total belanja.)
local a = 3
local b = 250
local c = a * b
local d = c + 100
print(d)Tulis keempat nama baru dan satu kalimat yang menjelaskan apa yang dihitung program ini.
Soal 2 — Pecah tugas besar
Pilih satu pekerjaan besar: bersiap ke sekolah, membuat kue, atau menyiapkan permainan papan untuk empat orang. Pecah menjadi lima sampai delapan langkah kecil, masing-masing berupa frasa singkat yang diberi nama (seperti "tuang adonan ke loyang", bukan "lakukan bagian tengahnya"). Beri nomor urut.
Soal 3 — Beri nama langkah sebagai fungsi
Ambil langkah-langkahmu dari Soal 2. Untuk tiga di antaranya,
tuliskan nama bergaya fungsi yang akan kamu berikan pada langkah itu,
dalam bentuk kata_kata (misalnya, "tuang adonan ke
loyang" → tuang_adonan). Kamu tidak menulis kode —
hanya berlatih mengubah langkah menjadi nama.
Tantangan — Pemecahan dua tingkat
Ambil tugas menyelenggarakan pesta ulang tahun kecil-kecilan. Pecah menjadi empat langkah besar (sebelum acara, makanan, permainan, setelah acara, atau versimu sendiri). Lalu pilih satu dan pecah itu menjadi tiga langkah yang lebih kecil. Kamu sudah melakukan dekomposisi dua kali — tugas besar menjadi bagian-bagian, satu bagian menjadi bagian-bagian yang lebih kecil. Tandai dengan jelas langkah mana yang termasuk bagian mana. Pengelompokan seperti ini adalah cara program besar diorganisasi.
Stuck atau sudah selesai? Buka halaman solusi PR.