选项的Scala命名约定

nny*_*thm 8 scala naming-conventions

当我返回某种类型的东西时Option,在函数名称中解释它是一个选项似乎很有用,而不是事物本身.例如,seqs有reduceOption.是否有标准的命名约定?我见过的事情:

maybeFunctionName

functionNameOption

- 似乎都不是那么好.

Tra*_*own 15

reduceOption和朋友(headOption等等)只是这样命名,以区别于他们不安全的替代方案(可以说首先不应该存在 - 即,应该只head返回一个Option[A]).

whateverOption 这不是标准库(或我所知道的大多数其他Scala库)中的常规做法,并且通常您不应该或不想在Scala中使用这种匈牙利符号.


Tal*_*man 8

为什么要让函数名更长?它没有贡献任何东西,因为当查看函数的类型时,返回Option的事实是显而易见的.

reduceOption是一种特殊情况,因为在大多数情况下你真的想使用reduce,除了它不适用于空序列.

  • "当查看函数的类型时,它返回一个Option的事实是显而易见的." ...除非,实际上没有明确表示类型,因为Scala不一定鼓励明确指定类型. (4认同)