Latihan 1 dari materi Documentation as Code di Clean Code — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Lengkapi dua fungsi di editor. Kode test di bawahnya (teks JSDoc, validAdr, invalidAdr dan delapan console.log) sudah ada dan tetap.
params: satu { name, type, description } per @param {tipe} nama keterangan, urut seperti di komentar. Contoh pola: /@param\s*\{(\w+)\}\s*(\w+)([^@]*)/g dengan exec di dalam while.
returns: { type } dari @returns {tipe}, atau null kalau komentar gak punya @returns.
validateAdr(adr): kembalikan { valid, errors }.
Tambahkan satu error ke errors untuk tiap field wajib yang kosong: title, status, context, decision, consequences.
Tambahkan satu error kalau status ada tapi bukan 'proposed', 'accepted', 'deprecated' atau 'superseded'.
valid bernilai errors.length === 0.
Output-nya harus delapan baris:
2
name
string
boolean
true
0
false
true
Keduanya juga diuji dengan input lain: parseJsDoc('/** @param {number} umur usia @returns {void} */').params[0].type harus number, parseJsDoc('/** @param {number} umur */').returns harus null, dan ADR lengkap dengan status 'deprecated' harus valid: true.
Hint
parseJsDoc mencari tiap tag @param dan mengambil tiga bagiannya: tipe di dalam kurung kurawal, nama, lalu keterangan. validateAdr berjalan di daftar field wajib dan mencatat yang kosong, lalu memeriksa status.
Pakai regex global dengan exec di dalam while untuk @param, lalu satu regex biasa untuk @returns; kalau gak ketemu, returns tetap null. Di validateAdr: for (const field of requiredFields) { if (!adr[field]) errors.push(...); } lalu cek validStatuses.includes(adr.status).
const paramPattern = /@param\s*\{(\w+)\}\s*(\w+)([^@]*)/g; let match; while ((match = paramPattern.exec(comment)) !== null) { params.push({ name: match[2], type: match[1], description: match[3].trim() }); } const r = /@returns?\s*\{(\w+)\}/.exec(comment); if (r) returns = { type: r[1] };
</>{ }.css=>#idfn()
Versi baru
HyperSheets
bagian dari BelajarWeb.dev
0%
Membuka gerbang…
HyperSheets
Memperbarui Aplikasi
Versi baru tersedia. Halaman akan dimuat ulang otomatis...