在F#中使用空列表还是“列表选项”更好?

f#

在 F# 中的域模型中使用可能为空的列表时是否有最佳实践?例如,在一个待办事项应用程序中,一个任务可能有 0 到 N 个子任务。哪种建模方式是首选?

type Task :
    { Name : string
      SubTasks : Task list option }

或者

type Task :
    { Name : string
      SubTasks : Task list } //potentially empty

我是一个初学者,但在我看来,业务逻辑可以与任何一种实现一起使用。我会通过检查选项类型或检查长度 = 0 的列表长度来验证没有子任务。

如果我们将 的值添加ParentTask : Task option到任务记录类型中,也许最好也将子任务列表作为一个选项?

谢谢!

回答

Task list option当值None和之间存在有意义的差异时才使用Some []。否则,您只是添加了一个冗余的可能状态,该状态需要在任何地方使用Option.map等进行处理。

听起来您的域中这两种状态之间没有区别,因此您可能应该只使用Task list.


以上是在F#中使用空列表还是“列表选项”更好?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>