我已经使用F#和Haskell学习函数式编程有一段时间了。但由于公司还没有批准使用F#,我仍然必须使用C#。不过我仍然试图保持函数式编程的风格,因为我注意到它有很多好处。
下面是一个典型的问题:
1. 数据库中有一个键集表,其中包含3个键(650万行)。 2. 还有4个支持性大小不同的表。 3. 基于多个输入的复杂公式。
我需要从上述所有数据中获取数据计算出一个值,并将其与每个键集行相关联并将其发送回数据库。需要查询其他4个表。为了提高性能,所有操作都在内存中完成。
对于对象导向开发(OO),我知道如何使用静态字典、对象模型、策略模式等来解决这个问题。但是在函数式编程中,我无法摆脱使用某些构造的不良影响。
我目前正在做以下假设以实现函数式解决方案:
1. 静态字典是不好的。这样可能会导致函数具有副作用。 2. 我需要一个“Calculate”函数,它接受不可变对象并返回一个带有三个键和计算值的不可变对象。这个函数内部可能还包含另一个相同风格的函数。 3. 传统的OO模式可能行不通。
您会如何高层次地设计这个问题?我的假设是否正确?是否有什么我忽略了的东西?
下面是一个典型的问题:
1. 数据库中有一个键集表,其中包含3个键(650万行)。 2. 还有4个支持性大小不同的表。 3. 基于多个输入的复杂公式。
我需要从上述所有数据中获取数据计算出一个值,并将其与每个键集行相关联并将其发送回数据库。需要查询其他4个表。为了提高性能,所有操作都在内存中完成。
对于对象导向开发(OO),我知道如何使用静态字典、对象模型、策略模式等来解决这个问题。但是在函数式编程中,我无法摆脱使用某些构造的不良影响。
我目前正在做以下假设以实现函数式解决方案:
1. 静态字典是不好的。这样可能会导致函数具有副作用。 2. 我需要一个“Calculate”函数,它接受不可变对象并返回一个带有三个键和计算值的不可变对象。这个函数内部可能还包含另一个相同风格的函数。 3. 传统的OO模式可能行不通。
您会如何高层次地设计这个问题?我的假设是否正确?是否有什么我忽略了的东西?