如果将新的配置选项添加到程序,则在将选项带到需要对其执行操作的位置时,它通常会产生大量涟漪效应。我知道有三种基本的处理方法:
将所有配置设置传递给程序中明确需要它们作为原语的部分。这是最明确的方式,也是最能使事物解耦的方式。缺点是这既冗长又脆弱。
将最常用的配置设置设为全局/静态。这是最简单的方法,但是会引入一定距离的操作,阻碍了可测试性,并假定该配置确实是全局的(您在任何给定时间只需要一个配置)。
创建一个包含整个程序或程序中每个主要问题的所有配置选项的配置类/结构,然后将其显式传递。它不如(1)明确,但比(2)更明确。如果只想更改一个函数调用的设置,则可以克隆config对象并更改该值。这在测试和实践中都是有用的。但是,您仍然可能最终将大量信息传递给它不需要的功能,并且更改config类/结构中的值仍会导致一定距离的操作。
您会考虑(3)模式还是反模式?如果是反模式,您该怎么办?