例如,在上一个问题中:Scala 编码风格和约定?
有人抱怨“如果方法增长,阅读代码会变得非常痛苦”..
Martin Odersky 博士回答“ .. 函数式编程风格是有很多小方法.. ”
那么是不是说你在使用Scala的时候,应该尽可能的用FP风格写,不要把Scala当作Java的替代品。
例如,在上一个问题中:Scala 编码风格和约定?
有人抱怨“如果方法增长,阅读代码会变得非常痛苦”..
Martin Odersky 博士回答“ .. 函数式编程风格是有很多小方法.. ”
那么是不是说你在使用Scala的时候,应该尽可能的用FP风格写,不要把Scala当作Java的替代品。
Scala 的美妙之处在于它对不同的人来说是不同的东西。鼓励以实用的方式写作。但是,您也可以以命令式风格编写 Scala。
即使以命令式风格编写,我们也鼓励您编写小方法。这使代码更易于阅读并因此更易于维护。
只是给你一个小例子,为什么鼓励函数式风格,假设你有 2 个不保证相同大小的整数列表,你必须创建一个新的整数列表,其中所有的总和等于较短列表的长度。在命令式风格中,您将执行以下操作:
val list1 = List(1,2,3,4,5)
val list2 = List(1,2,3,4,5,6,7)
// imperative way
val newList = collection.mutable.ListBuffer[Int]()
val length = math.min(list1.size, list2.size)
for(i <- 0 until length) {
newList += list1(i) + list2(i)
}
// functional way
list1.zip(list2).map { case (x,y) => x+y }
看,第二个例子更小,更关注“做什么”而不是“如何”做。每个人都必须从某个点开始,一开始你可以编写普通的命令式代码,但迟早你会采用越来越多的函数式范例,只是因为它们会让你的代码更好、更安全。
我喜欢 Scala 的地方在于它是一种多范式语言。你可以用最适合手头问题的方式编写代码。
我强烈怀疑,随着时间的推移,您将在某些代码中转向更具功能性的风格。但不一定全部(确实存在一些问题,命令式方法更简洁地描述了问题)。
肯定有人会用“对”和“错”来表达这种东西,但我怀疑他们没有抓住重点。如果您想编写纯函数式代码,请使用纯函数式语言。