Orthogonality

Beberapa waktu yang lalu saya sempat berdiskusi dengan team kecil kami, saat itu, seorang developer anggota tim butuh memanggil satu fungsi native dari embedded browser (ie. webview). Karena data yang di tambilkan webview adalah dari server (via Rest API), salah satu ide yang sempat muncul adalah dengan menyematkan satu kode dari server yang memanggil satu fungsi native yang didefinisikan di aplikasi. Tentu saja saya tidak sependapat dengan cara seperti ini, dan akhirnya teknik yang lebih baik diimplementasikanm yaitu fungsi tersebut disematkan di client aplikasi sebelum di tampilkan di webview.

Orthogonality

Dalam geometry, garis ortogonal adalah garis yang tegak lurus terhadap bidang frontal. dan dua garis disebut ortogonal jika keduanya tegak lurus satu sama lain (perpotongannya membentuk sudut 90 derajat). Dalam pemrograman, dua hal dikatakan ortogonal jika perubahan pada salah satunya tidak berpengaruh terhadap yang lainnya (independent/decoupled). Pada sistem yang didisain dengan sangat baik, perubahan pada basis data tidak akan berpengaruh terhadap antar muka, dan sebaliknya perubahan antarmuka juga tidak akan secara langsung berdampak pada basis data.

Demikian juga seperti topik yang saya ceritakan di awal blog ini, saya insist tidak boleh API memanggil fungsi di native client karena ini akan membuat aplikasi kita tidak ortogonal dengan API. Misalnya saat nama fungsi di aplikasi client berubah, maka di server juga harus dirubah begitu juga sebaliknya. bagaimana kalau sampai lupa dilakukan perubahan tersebut di salah satu tempat, padahal setidaknya ada 2 developer yang terlibat? Saat dua sistem yang berbeda sangat bergantung (dependent) satu sama lain, maka tidak akan terjadi pembenahan satu tempat saat satu bug muncul. Tentunya hal ini sangat tidak baik. Oleh karena itu, sistem yang baik adalah yang ortogonal, yang mana perubahan di satu bagian tidak akan berdampak langsung pada bagian yang lain yang tidak berkaitan.

bacaan:
1. http://en.wikipedia.org/wiki/Orthogonality_(programming)
2. http://en.wikipedia.org/wiki/Orthogonal#Computer_science

2 pemikiran pada “Orthogonality

Tinggalkan komentar