Jika Anda menambahkan opsi konfigurasi baru ke suatu program, sering kali ada banyak efek riak dalam hal mendapatkan opsi di mana mereka perlu ditindaklanjuti. Ada tiga cara dasar untuk mengatasi hal ini yang saya ketahui:
Lewati semua pengaturan konfigurasi ke bagian-bagian program Anda yang membutuhkannya secara eksplisit sebagai primitif. Ini adalah cara paling eksplisit dan cara yang memisahkan banyak hal. Kelemahannya adalah ini verbose dan rapuh.
Buat pengaturan konfigurasi yang paling sering digunakan global / statis. Ini adalah cara paling sederhana tetapi memperkenalkan aksi pada jarak jauh, menghalangi testability dan mengasumsikan bahwa konfigurasi benar-benar global (bahwa Anda hanya ingin satu konfigurasi pada waktu tertentu).
Buat kelas konfigurasi / struct yang berisi semua opsi konfigurasi untuk seluruh program atau untuk setiap masalah utama dalam program, dan kemudian sampaikan ini secara eksplisit. Ini kurang eksplisit dari (1) tetapi lebih eksplisit dari (2). Jika Anda ingin mengubah pengaturan hanya untuk satu panggilan fungsi, Anda dapat mengkloning objek konfigurasi dan mengubah nilai yang satu ini. Ini berguna dalam pengujian dan dalam praktik. Namun, Anda masih berpotensi mengirimkan banyak info ke fungsi yang tidak diperlukan dan mengubah nilai di kelas config / struct masih dapat menyebabkan tindakan di kejauhan.
Apakah Anda mempertimbangkan (3) pola atau anti-pola? Jika ini anti-pola, apa yang Anda lakukan?