例如,在前面的问题:Scala coding styles and conventions?如果您使用Scala作为命令式语言,那么您做错了吗?
有人抱怨“如果该方法的增长就变得非常痛苦的阅读代码” ..
和马丁·奥德斯基博士回答说:“..功能编程风格是有很多小的方法..。“
因此,当您使用Scala时,您应该尽可能使用FP风格编写代码,并且不要将Scala作为Java替代品。
例如,在前面的问题:Scala coding styles and conventions?如果您使用Scala作为命令式语言,那么您做错了吗?
有人抱怨“如果该方法的增长就变得非常痛苦的阅读代码” ..
和马丁·奥德斯基博士回答说:“..功能编程风格是有很多小的方法..。“
因此,当您使用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 }
看到,第二个例子是更小,更侧重于“做什么”做,而不是“如何”做。每个人都必须从某个时候开始,一开始你可以编写普通的命令式代码,但迟早你会采用越来越多的功能范例,只是因为它们使你的代码更好更安全。
你总是想要小的方法。你的问题到底是什么? –
如果你有太多小方法会怎么样? – irreputable
这里没有问题,它似乎应该采取程序员而不是.. –