【发布时间】:2021-09-13 14:30:51
【问题描述】:
我正在用 F# 编写一个更大的项目,其中性能至关重要。到目前为止,核心结构是 19 个函数,它们都具有相同的签名:参数 -> 记录 -> Result(Record, Error) 以及这些函数的适当组合/绑定,以确保在下一个函数中使用前一个函数产生的记录。这些参数永远不会被覆盖,因此它们在所有 19 个函数调用中都是相同的。这里是“最终”功能:
let execution parameters record =
let (>==) m f = Result.bind (f parameters) m
record
|> stepOne parameters
>== stepTwo
>== stepThree
我的问题是:在性能(或风格)方面,将步骤定义为类型为 record -> record 的“执行”的子函数会更好,这样就不必将相同的参数传递 19 次不同的功能? 它还允许代码依赖于特定参数(参数是记录类型)而不是一次所有参数。另一方面,这些子功能不能在这个上下文之外重用(我不认为,他们永远不会),这可能会使单元测试更加困难。在我的情况下,这也意味着一个很长的执行功能,这可能是不可取的。非常感谢任何输入!
【问题讨论】:
标签: performance f#