Latihan 1: Single Responsibility — Clean Code

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

Class UserManager di editor mengerjakan tiga hal sekaligus: memeriksa email, menyimpan user, dan memformat user untuk ditampilkan. Pecah jadi tiga class dengan satu tanggung jawab masing-masing:

  1. class EmailValidator dengan method isValid(email): mengembalikan true kalau email mengandung @, selain itu false.
  2. class UserRepository dengan method save(user): mengembalikan { id: 1, ...user } (pura-pura menyimpan).
  3. class UserFormatter dengan method format(user): mengembalikan '[' + user.id + '] ' + user.name + ' (' + user.email + ')'.
  4. Isi isValid, saved dan formatted dengan memanggil ketiga class baru itu untuk user yang sudah ada ({ name: 'Budi', email: '[email protected]' }), bukan UserManager. Format user hasil save, karena cuma dia yang punya id.

Tiga console.log di bawah tetap ada. Output-nya harus:

true
{"id":1,"name":"Budi","email":"[email protected]"}
[1] Budi ([email protected])

UserManager boleh kamu hapus setelah selesai.

Hint