Fallacy #11: Business Logic can and Should be centralized

Kebanyakan orang akan berpikiran bahwa reuse adalah baik. Hal ini tentu saja salah satu bagian penting dari object oriented. Tetapi tidak selamanya hal ini dapat diterapkan. Encapsulation juga merupakan hal yang paling vital dalam filosofi object oriented. Contohnya adalah bagaimana kita dapat mengimplementasikan business logic bahwa nama tidak akan lebih dari 40 karakter. Apakah di client, domain logic ataupun database.

Masalahnya adalah jika hal tersebut di implementasi di berbagai tempat adalah bagaimana jika rules tersebut berubah. Sebagai strategi untuk mengatasi masalah tersebut biasany kita membuat business logic tersebut di centralized place dan diakses melalui remote service. Calculation dan Validation dan service.

Problem dengan reuse adalah centralization dan menimbulkan coupling. Lebih banyak reuse maka akan lebih banyak coupling terhadap component tersebut dan semakin kompleks component tersebut. Coupling menjadi masalah yang cukup besar jika kita melakukan sentralisasi terhadap business logic atau validasi.

Kita harus melihat probability dari apakah rule tersebut berubah dengan sangat sering atau tidak. Hal ini menyebabkan kemampuan adaptasi software terpengaruh oleh sentralisasi business logic. Kita harus menerima bahwa sebagian rules memang ditujukan untuk perubahan. Jadi tidak selamanya reuse menyelesaikan permasalahan.

Solusinya adalah kita harus menerima bahwa business logic tertentu harus terdistribusi. Logic yang sama akan di install di mesin yang berbeda. Tetapi kita dapat membuat sentralisasi di development view dari software architecture. Saya sangat menyarankan anda membaca 4+1 views of software architecture. Software architecture sangat kompleks sehingga tidak dapat di buat dalam satu diagram saja. Diagram yang berbeda dibutuhkan untuk tujuan yang berbeda pula.

Kita dapat membuat feature branch dengan gitflow untuk melakukan tagging terhadap source code yang berhubungan dengan business rules tertentu. Kita dapat mencari dengan mudah source code yang akan diubah dengan cara seperti itu. Hal ini sangat baik sekali dari sisi tracebility. Sehingga kita tidak lagi perlu pusing dengan file yang terdistribusi dalam mengubah logic tersebut. Kita juga dapat mengurangi coupling dan menghindarinya sama sekali.

Jadi dengan ini kita dapat memulai mendisiplinkan diri untuk memberikan source code comment yang benar dan mengassign nya dengan issue/requirement atau backlog yang sesuai. Hal ini dimudahkan dengan JIRA atau TFS sehingga kita dapat melakukan relasi ke source code dari issue yang ada.

Dengan demikian kita dapat menciptakan code yang loose coupling dan tidak akan break jika terjadi perubahan pada satu tempat mengenai business logic yang sama. Duplication tidak selamanya Evil. Kita sekarang mempunyai tools untuk melakukan navigasi terhadap code yang duplikasi dengan development view.

Kebanyakan ide-ide yang ada di sini merupakan ide yang sudah lama ada dan bukan baru-baru saja di temukan. Fokus kita adalah prinsip-prinsip yang tidak akan mati dengan adanya kemajuan teknologi.

results matching ""

    No results matching ""