Ringkasan: Apakah ada pola desain yang baik untuk mengurangi duplikasi informasi di antara nilai-nilai yang saling bergantung erat?
Dalam pekerjaan saya, cukup umum untuk memiliki hubungan antara jumlah sehingga Anda dapat memperoleh salah satu dari jumlah tersebut jika Anda tahu yang lain. Contohnya adalah hukum gas Ideal :
Pv = RT
Anda bisa membayangkan membuat kelas untuk mewakili keadaan gas ideal. Kelas akan memiliki 3 sifat, secara alami Pressure, Temperaturedan SpecificVolumemasing-masing jenis yang tepat.
Untuk pengguna objek kelas ini, akan wajar untuk mengharapkan bahwa jika Anda menetapkan nilai untuk keduanya Pressuredan Temperature, Anda kemudian bisa membaca nilai untuk SpecificVolumedan berharap objek telah menghitungnya untuk Anda.
Demikian juga, jika Anda menetapkan nilai untuk keduanya Pressuredan SpecificVolume, Anda bisa membacanya Temperature, dll.
Namun untuk benar-benar mengimplementasikan kelas ini diperlukan duplikasi informasi. Anda perlu memprogram semua variasi persamaan secara eksplisit, memperlakukan variabel yang berbeda sebagai dependen dalam setiap kasus:
T = P * v / RP = R * T / vv = R * T / P
yang tampaknya melanggar prinsip KERING . Meskipun masing-masing menyatakan hubungan yang sama, kasus-kasus ini membutuhkan pengkodean & pengujian independen.
Dalam kasus nyata, logika yang saya pikirkan lebih kompleks dari contoh ini, tetapi menunjukkan masalah dasar yang sama. Jadi akan ada nilai nyata jika saya bisa mengekspresikan logika hanya sekali, atau setidaknya lebih sedikit.
Perhatikan bahwa kelas seperti ini mungkin juga harus berurusan dengan memastikan bahwa itu diinisialisasi dengan benar sebelum nilai akan dibacakan, tapi saya pikir itu adalah pertimbangan sekunder.
Meskipun saya memberikan contoh matematika pertanyaannya tidak terbatas hanya pada hubungan matematika antara data. Itu hanya tampak sebagai contoh sederhana untuk menjelaskan maksudnya.
Pv/T != R. Tidak yakin apakah gagasan itu dapat membantu Anda memecahkan masalah yang mendasarinya, atau apakah itu menyulitkannya.