Dalam Object Oriented Programming (OOP) seharusnya yang muncul adalah kolaborasi antar object bukan berbagi informasi. Jika yang terjadi adalah berbagi informasi maka yang terjadi adalah kesalahan design. Yang penting dari sebuah object adalah apa yang bisa dia lakukan, bukan bagaimana dia melakukan. Maka daripada membagi informasi, lebih baik memerintahkan object lain yang memiliki informasi itu untuk melakukan sesuatu.

Konsep property dalam C# (get dan set) cenderung mengarahkan developer untuk membagi informasi. Walaupun banyak orang berargument bahwa dengan property kita bisa melindungi data. Ya, melindungi field, tidak secara konsep. Selain itu bagi yang tidak hati-hati ini adalah jalan tikus untuk break the rule.

Information hiding bukan berarti data harus dilindungi, harus secure, harus aman, tidak tersentuh siapapun. Data boleh diketahui oleh client, yang tidak boleh adalah client tidak boleh mendasarkan perhitungannya pada data yang ia ketahui itu[need citation]. Sebab boleh jadi jika sebuah class berubah cara mendefinisikan data itu, maka client itu akan berubah juga. Sebisa mungkin class yang berubah tidak mempengaruhi perubahan konsumer-konsumernya.

Eric Evan lebih ekstrim lagi bilang dalam DDD, programmer dari client tidak perlu tahu apapun mengenai yang ia konsumsi. Hanya apa yang ia konsumsi harus bermakna secara bahasa (dalam UBIQUOTUS LANGUAGE). Sebab, jika programer tahu bagaimana sesuatu diimplementasikan, kemudian menggunakan asumsi itu dalam class client, maka jika implementasi berubah programmer harus mengubah apa yang ia buat.

Yang penting dari ini semua adalah masalah maintenance. Berbagi informasi adalah berbahaya dari sisi maintenance. Lebih baik minta pihak yang memiliki informasi untuk melakukan sesuatu.

Property ada tempatnya. Termometer misalnya, memang begitu cara termometer membagi informasi.

Iklan