知识卡片
用公式而非直接计算应对参数组合爆炸
内容
金融模型中不同业务品种对应不同计算公式,若为每个品种单独写代码,几个品种还能应付, 上百个就不可持续。解法是把公式本身作为运行时输入解析的数据:运算元素(a、b等,终结 符号)和运算符号(加减号,非终结符号)分离,新增品种只需提供新公式字符串和参数值, 无需改代码。发散:这是”把行为参数化到数据里”的极端形式——连计算规则本身也变成数据, 代价是需额外构建一套解析机制。
参考来源
- 位置:《设计模式之禅(第2版)》第27章《解释器模式》(源文件:_epub-src/text/part0122.html)
- 结论依据:原文列举三个业务品种各自不同的公式,指出"如果使用直接计算数值的方法需要为每个品种写一个算法,目前仅仅是3个业务种类,那上百个品种呢?歇菜了吧!建立公式,然后通过公式运算才是王道",并区分运算元素(终结符号)和运算符号(非终结符号)两类语法元素。
- 原始内容:如果使用直接计算数值的方法需要为每个品种写一个算法,目前仅仅是3个业务种类,那上百个品种呢?歇菜了吧!建立公式,然后通过公式运算才是王道……运算元素就是指a、b、c等符号……也叫做终结符号……运算符号就是加减符号,需要我们编写算法进行处理……也叫做非终结符号。