08. Komentar dan catatan untuk diri sendiri — Solusi PR

File solusi .lua ada di exercises/08/homework/solutions/.

Soal 1 — Beri anotasi pada sebuah program

Soal. Tambahkan header dan dua komentar mengapa tanpa mengubah keluaran.

Cara memikirkannya. Komentar tidak pernah mempengaruhi keluaran, jadi ini murni soal komunikasi. Header menjelaskan apa yang dilakukan file itu; komentar di dalam kode menjelaskan pilihan yang mungkin membuat pembaca bertanya-tanya.

Solusi.

--[[
  Prints a tiny scoreboard line for one player.
  Used to check the score formula by eye.
]]

local base = 50        -- everyone starts the round with 50
local bonus = 25       -- reward for a no-damage run
print("Score: " .. (base + bonus))

Kesalahan umum.

  • -- add base and bonus di atas baris print hanya mengulang apa yang sudah terlihat. Jelaskan mengapa 25 adalah bonusnya, bukan bahwa keduanya dijumlahkan.

Soal 2 — Cari bug dengan cara mengomentari baris

Soal. Matikan satu baris supaya keluarannya adalah start lalu end.

Solusi.

print("start")
-- print("this line should not be here")
print("end")

Kesalahan umum.

  • Menghapus barisnya alih-alih mengomentarinya. Dengan mengomentari, baris itu tetap ada kalau suatu saat kamu butuhkan lagi.

Soal 3 — Matikan sebuah blok

Soal. Gunakan satu komentar multi-baris untuk mematikan tiga baris di tengah.

Solusi.

print("first")
--[[
print("middle 1")
print("middle 2")
print("middle 3")
]]
print("last")

Keluaran:

first
last

Kesalahan umum.

  • Lupa menutup dengan ]], yang menyebabkan sisa file ikut termatikan, termasuk print("last").

Tantangan — Mengapa, bukan apa

Soal. Ganti komentar yang hanya mengulang kode dengan komentar yang benar-benar berguna.

Cara memikirkannya. Untuk setiap baris, tanyakan "apakah pembaca sudah tahu ini dari kodenya?" Kalau iya, komentar itu hanya jadi kebisingan — hapus atau ganti dengan alasannya.

Solusi. Sebelum:

local lives = 3      -- set lives to 3
lives = lives - 1    -- subtract 1 from lives

Sesudah:

local lives = 3      -- standard start; three tries per game
lives = lives - 1    -- player walked into the lava

Kesalahan umum.

  • Memperkata ulang setiap komentar alih-alih memangkasnya. Kadang komentar terbaik adalah tidak ada komentar sama sekali — kalau kodenya sudah jelas, diam itu lebih baik.

Selesai?

Sekarang kamu bisa meninggalkan catatan yang membantu, bukan yang mengotori kode, dan menyalakan atau mematikan kode tanpa harus menghapusnya. Selanjutnya adalah Toolkit print, menyelami lebih dalam cara menampilkan sesuatu di layar.