Latihan 1: Anti-patterns & Code Smells — Design Patterns

Latihan 1 dari materi Anti-patterns & Code Smells di Design Patterns — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.

Starter sudah berisi empat contoh kode (godFn, clean, magicOnly, nestedOnly) dan mencetak detectSmells(...).join(',') untuk masing-masing; bagian itu tetap. Lengkapi detectSmells(source):

  1. Siapkan const smells = [].
  2. Kalau source.split('\n').length > 20, push 'long-function'.
  3. Kalau /\b(?!0\b|1\b)\d+\b/.test(source), push 'magic-number'.
  4. Ukur kedalaman kurung kurawal: telusuri tiap karakter, depth++ untuk { (simpan ke maxDepth kalau lebih tinggi) dan depth-- untuk }. Kalau maxDepth >= 4, push 'deep-nesting'.
  5. Kembalikan smells.sort(), supaya urutannya abjad.

Console harus mencetak empat baris ini, berurutan:

  1. deep-nesting,long-function,magic-number
  2. baris kosong (clean gak punya smell, jadi [] di-join jadi teks kosong)
  3. magic-number
  4. deep-nesting

Yang juga dinilai: detectSmells("const x = 42;").join(",") harus magic-number, satu smell saja.

Hint