Skip to content

Message Chains ​

sourcemaking

Penjelasan Smell ​

Smell ini terjadi ketika ingin mengakses sebuah method, perlu dilakukan pemanggilan dari hasil return method lainnya sehingga membentuk rantai: obj.a().b().c().

Perhatikan DistanceTest.java, terdapat message chaining ketika ingin mengakses latitude dan longitude.

Penyelesaian ​

Dilakukan Hide Delegate. Perhatikan class BojekDriver dan Destination, telah ditambahkan fungsi latitude() dan longitude() yang sebenarnya melakukan delegasi chaining yang dilakukan di package before. Hal ini dilakukan agar class client tidak merasakan adanya chaining, disembunyikan di dalam sini.

Alhasil, seperti yang bisa dilihat di DistanceTest.java di package after, message chain sudah tidak ada.

Tambahan ​

Jangan terlalu agresif mengurusi message chain karena bisa menyebabkan smell Middle Man.

Pertimbangkan mengurusi message chain bila terjadi di banyak tempat atau kebetulan ada class yang behavior-nya cocok untuk menampung method delegasi.

Created by Saugi