Latihan 1: Code Smells Catalog — Clean Code

Latihan 1 dari materi Code Smells Catalog di Clean Code — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.

Lengkapi detectSmells(fnString): ia menerima kode sebuah fungsi sebagai string dan mengembalikan array nama smell yang ketemu. fn1, fn2, fn3 dan tiga console.log di bawahnya sudah ada dan tetap.

Cek tiga smell ini, dan push namanya ke smells dalam urutan ini:

  1. "long-parameter-list": lebih dari 3 parameter. Ambil isi kurung pertama setelah function (misalnya /function\s*\w*\s*\(([^)]*)\)/), pecah dengan koma, buang yang kosong, lalu hitung.
  2. "magic-number": ada angka selain 0 dan 1. Pakai fnString.match(/\b\d+\b/g) || [], lalu saring '0' dan '1'.
  3. "long-function": lebih dari 20 baris (fnString.split('\n').length > 20).

Output-nya harus:

["long-parameter-list","magic-number"]
[]
["magic-number","long-function"]

detectSmells juga diuji dengan fungsi lain: detectSmells('function f(a,b,c,d) { return 7; }') harus ["long-parameter-list","magic-number"], dan detectSmells('function g(a) { return a + 1; }') harus [].

Hint