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