我目前在
Scala中编程,但我猜这适用于任何函数式编程语言,或者是适用于建议不变性并可与数据库交互的任何编程语言.
当我从数据库中获取数据时,我将其映射到模型数据结构.在功能性编程中,数据结构往往是不可变的.但数据库中的数据是可变的,所以我不知道我的模型是否应该是可变的.一般来说,在这种情况下,什么是好的和公认的做法?
在马尔丁Odersky在Coursera的Scala课程之后,我记得他说的是:
It’s better to use immutable data structures,but when you want to
interact with the real world,it can be useful to use mutable data
structures.
所以,再一次,我想知道我该怎么办到目前为止,我的数据结构是不可变的,当我想要更新我的数据库中的记录时,这导致了很多样板代码.使用可变模型有助于减少锅炉板块?
(我已经问了a similar question which was quite specific to the technologies I use,但我对实际的答案不满意,所以我在这里概括一下.)
解决方法
无论是使用可变的还是不可变的数据结构,“与现实世界的交互”无关.这是一个经常重复的furfy,你很怀疑它是伟大的.
虽然这样消除垃圾通常更健康,但您可能对粗略的剥离感兴趣:
http://blog.higher-order.com/blog/2012/09/13/what-purity-is-and-isnt/
但是,我强烈建议您将其解除并继续前进.
在你的问题上,当你想对不变数据结构执行操作时,你说你有样板.事实上,在很大程度上解决了这个问题的理论非常完善.这是一篇关于Scala的文章:
http://dropbox.tmorris.net/media/doc/lenses.pdf
希望有帮助.