Latihan 1 dari materi Law of Demeter di Clean Code — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Di starter, kode luar harus menembus order sampai ke alamat: train wreck order.getCustomer().getAddress().getCity(). Class Address (getCity()), Customer (getName(), getAddress()) dan getCustomer() di Order sudah ada dan tetap, begitu juga const order = new Order(new Customer('Budi', new Address('Jakarta'))); dan console.log ketiga.
Di class Order, tambahkan method getCustomerName() yang mengembalikan nama customer: return this.customer.getName();.
Di class Order, tambahkan method getCustomerCity() yang mengembalikan kota customer: return this.customer.getAddress().getCity();.
Ganti dua console.log(null) dengan console.log(order.getCustomerName()); dan console.log(order.getCustomerCity());. Jangan tulis rantai getCustomer().getAddress() di kode pemanggil.
Output-nya tiga baris:
Budi
Jakarta
true
(true dari typeof Order.prototype.getCustomerCity === 'function'.)
Hint
Pemanggil cukup bicara dengan order. Order sendiri yang tahu jalan ke customer dan alamatnya, jadi rantainya pindah ke dalam class Order.
Tulis dua method di dalam class Order, di bawah getCustomer(). Di dalamnya, this.customer adalah field Order, jadi boleh dipanggil. Lalu ganti dua console.log(null) dengan pemanggilan method baru itu.