05. Penamaan dan dekomposisi
Bab kertas terakhir. Ini mencakup dua kebiasaan yang memisahkan kode yang menyiksa dari kode yang hampir terbaca sendiri: nama yang baik, dan memecah pekerjaan besar menjadi langkah-langkah kecil. Keduanya tidak membutuhkan komputer, dan keduanya membuat sisa buku ini lebih mudah untuk ditulis dan diperbaiki.
Nama adalah pesan untuk pembaca berikutnya
Komputer tidak peduli apa yang kamu sebut sesuatu. x,
q7, dan monsters_left semuanya bekerja dengan
cara yang sama. Nama adalah untuk orang berikutnya yang membaca kode —
biasanya kamu, seminggu kemudian, sudah melupakan
segalanya.
Baca dua program ini. Keduanya melakukan hal yang persis sama.
x = 60
y = 8
z = x * y
print(z)minutes_per_hour = 60
hours = 8
total_minutes = minutes_per_hour * hours
print(total_minutes)Keduanya mencetak 480, tapi hanya yang kedua yang
memberitahu kamu apa artinya 480. Yang pertama membuatmu
menjadi detektif; yang kedua, pembaca. Pengetikan ekstra itu terbayar
sendiri pertama kali kamu kembali dan memahaminya secara instan.
Apa yang membuat nama menjadi baik
- Katakan apa yang dipegang, bukan tipenya.
player_namemengalahkanstring1;coins_leftmengalahkannumber_thing. - Lebih panjang tidak apa-apa jika lebih jelas.
seconds_until_respawnadalah nama yang bagus. Tidak ada yang pernah mengutuk kode karena terlalu mudah dibaca. - Cocokkan ukuran pekerjaan. Penghitung yang hidup
dua baris bisa berupa
i. Nilai yang berjalan di seluruh program layak mendapat nama yang nyata. - Konsistenlah. Jika satu skor adalah
player_score, jangan sebut berikutnyaenemyScore. Pilih satu gaya dan tetap gunakan di dalam sebuah file.
Kamu belum perlu aturan Python tentang nama — itu datang di bab variable. Untuk sekarang, bangun kebiasaan: sebelum kamu menulis nama, tanyakan apakah orang asing akan tahu apa yang dipegang ini?
Dekomposisi: pekerjaan besar menjadi langkah kecil
Seluruh program sekaligus itu menakutkan. Daftar langkah-langkah kecil tidak begitu. Memotong tugas besar menjadi potongan-potongan kecil yang dapat dipahami secara terpisah disebut dekomposisi, dan itulah cara setiap program nyata dibangun.
Kamu melakukan ini di Bab 02 tanpa kata keren itu: flowchart adalah tugas besar yang dipecah menjadi langkah-langkah satu kotak. Berikut ini dalam tulisan biasa. Misalkan pekerjaannya adalah "sapa pemain dan tampilkan statistik mereka":
- Minta pemain untuk nama mereka.
- Minta pemain untuk level mereka.
- Hitung gelar dari level (misalnya "Novice" atau "Hero").
- Cetak baris sambutan.
- Cetak baris statistik.
Setiap langkah cukup kecil untuk dibayangkan sepenuhnya. Tidak ada yang "seluruh program", hal menakutkan yang kamu mulai. Nanti, beberapa langkah ini masing-masing akan menjadi function pendek dengan namanya sendiri — dan langkah yang diberi nama dengan baik sudah setengah jalan menuju function yang diberi nama dengan baik.
Memberi nama pada langkah-langkah
Dekomposisi yang baik dan penamaan yang baik adalah keterampilan yang sama yang diarahkan ke hal-hal yang berbeda. Memberi nama pada langkah benar-benar berarti memberi nama pada function masa depan. Bandingkan:
- Langkah yang kabur: "lakukan hal-hal dengan angka-angkanya".
- Langkah yang diberi nama: "hitung total skor" → nanti,
total_score().
Jika kamu tidak bisa memberi nama langkah dalam frasa pendek, kemungkinan itu dua langkah dalam satu pakaian. Pecah sampai setiap langkah punya nama yang jelas dan pendek.
Pikirkan game kecil yang kamu suka. Di atas kertas, tulis satu kalimat yang mendeskripsikan seluruh hal yang dilakukannya. Lalu pecah kalimat itu menjadi tiga hingga enam langkah yang diberi nama. Perhatikan bagaimana setiap langkah mudah dipikirkan, bahkan ketika keseluruhannya tidak begitu.
Seberapa kecil sudah cukup kecil?
Sebuah langkah sudah cukup kecil ketika kamu bisa memegang semua isinya di kepalamu dan memberi namanya dengan jelas. Jika masih terasa kabur, pecah lagi. Begitu kamu mencapai "tambah 1 ke skor", berhenti — kamu sudah cukup jauh. Tujuannya adalah langkah-langkah yang bisa kamu percayai, bukan sebanyak mungkin langkah.
Pekerjaan Rumah
Pekerjaan rumah kertas terakhir dalam buku. Setelah ini, kamu menginstal Python dan menulis kode nyata.
Soal 1 — Ganti nama misteri
Berikut adalah program dengan nama yang sengaja tidak berguna. Kamu tidak bisa menjalankannya, tapi kamu bisa membacanya. Di atas kertas, tulis ulang empat nama sehingga orang asing akan mengerti apa yang dipegang masing-masing. (Petunjuk: matematikanya adalah total belanja.)
a = 3
b = 250
c = a * b
d = c + 100
print(d)Tuliskan keempat nama baru dan satu kalimat yang mengatakan apa yang dikerjakan program tersebut.
Soal 2 — Potong tugasnya
Pilih satu pekerjaan besar: bersiap untuk sekolah, memanggang kue, atau mengatur game papan untuk empat pemain. Pecah menjadi lima hingga delapan langkah kecil, masing-masing frasa pendek yang diberi nama (seperti "tuangkan adonan", bukan "lakukan bagian tengahnya"). Nomori mereka berurutan.
Soal 3 — Beri nama langkah-langkah sebagai function
Ambil langkah-langkahmu dari Soal 2. Untuk tiga di antaranya,
tuliskan nama bergaya function pendek yang akan kamu berikan untuk
langkah itu, dalam bentuk kata_kata (misalnya,
"tuangkan adonan" → pour_batter). Kamu tidak
menulis kode — hanya berlatih mengubah langkah menjadi nama.
Tantangan — Pemecahan dua level
Ambil pekerjaan jalankan pesta ulang tahun kecil. Pecah menjadi empat langkah besar (sebelum, makanan, permainan, setelah, atau milikmu sendiri). Lalu pilih satu dan pecah itu menjadi tiga langkah yang lebih kecil. Kamu sekarang telah melakukan dekomposisi dua kali — pekerjaan besar menjadi bagian-bagian, satu bagian menjadi bagian yang lebih kecil. Tandai dengan jelas langkah-langkah mana yang termasuk di bawah mana. Sarang ini adalah cara program besar diorganisasi.
Bingung atau sudah selesai? Buka halaman solusi pekerjaan rumah.