你能否为Scala哲学和程序设计提出任何好的介绍?

Iva*_*van 11 scala

在Java和C++中,设计程序的对象层次结构非常明显.但是从Scala开始,我发现自己很难确定要定义哪些类来更好地使用Scala的语法糖设施(甚至理想我应该如何设计以获得更好的性能).关于这个问题有什么好的读数吗?

oll*_*erg 7

我已经阅读了4本关于Scala的书籍,但我还没有找到你要求的东西.我猜你已经读过Odersky(Artima)的"Scala编程".如果没有,这是一个链接到在线版本:

http://www.docstoc.com/docs/8692868/Programming-In-Scala

本书提供了许多如何在Scala中构建面向对象模型的示例,但所有示例的类数都非常少.我不知道有任何书会教你如何使用Scala构建大规模系统.

  • 自Smalltalk以来,势在必行的面向对象已经存在,所以我们对这个范例了解很多.
  • 另一方面,功能性面向对象是一个相当新的概念,因此在几年内我会期望出现描述大型FOO系统的书籍.无论如何,我认为PiS书为你提供了一个非常好的图片,你可以如何组合系统的基本构建块,如Factory模式,如何用函数文字替换策略模式等等.

Viktor Klang曾告诉我的一件事(以及我真正同意的事情)是C++/Java和Scala OO之间的一个区别是你在使用Scala时定义了更多(更小)的类.为什么?因为你能!结果的语法糖case class在定义类时非常小,无论是在键入还是在代码的可读性方面.如你所知,许多小班通常意味着更好的OO(更少的错误)但性能更差.

我注意到的另一件事是我在处理不可变对象时更多地使用工厂模式,因为实例的所有"更改"都会导致创建新实例.感谢上帝的copy()方法case class.这种方法使工厂方法缩短了很多.

我不知道这对你有什么帮助,但我认为这个主题非常有趣,而且我也在等待更多关于这个主题的文献.干杯!