某些人主张将自己喜欢的语言作为启蒙的唯一方法,与同类别的另一种语言相比,生产率可以在两位数的百分比范围内提高。
我不相信
(当您比较Java和Assembler之类的东西时可能是正确的,但很少有人这样做)。
还有其他一些语言告诉您,Scala和Java之类的语言至少没有关系。 我认为他们也是错的。 原因是:尽管我在日常工作中实际上并未使用Scala,但它确实会影响Java编码。 这是我注意到的一些事情。
- 我赞赏不变性。 我很早就意识到不变性的好处。 但是在Java中,使用不可变数据结构非常笨拙,以至于我只在较小的区域(如相当简单的值对象)中使用了这种方法。 但是现在我发现我自己更倾向于使用不可变的数据结构,即使是相对复杂的东西。
- 很多小班。 Scala中的课程太小了。 如果您计算'class','object'和'trait'关键字,编写一个包含六个类的代码的页面很容易,当您查看Scala编译器从闭包等生成的内容时,甚至更多。 尽管在Java中创建类的工作量很大,但我发现自己对单一职责原则的思考非常严格,从而导致了更小的类,这些类更易于测试。
- 在DSL中思考更多。 Scala非常适合创建内部DSL。 许多库都使用这种方法来设计其API,我也在我的小项目中也这样做。 Java对于DSL几乎没有用。 但是您可以做一些事情。 即使是简单的方法链接之类的东西。 我最近经常使用它,尤其是在进行测试时,因为在这里代码的可读性比普通代码更为重要。
- 我几乎放弃了Java泛型。 在了解了一个好的类型系统可能带来的好处之后,即使编译后的代码与Java在同一JVM上运行,我也看到了Java泛型的严格限制。 在那之前,我倾向于认为愚蠢的只是我自己。 虽然这种假设通常是正确的。 我过去尝试使用Java泛型做的许多事情都无法使用,因为Java缺乏必要的功能(例如协方差和逆方差)。 因此,只要涉及多个类型参数,我就会从代码中删除泛型。
因此,继续学习新的语言。 即使您不能在正常工作中使用它。 您仍然会学到有用的东西。
但是要注意。 我也可能会让您讨厌日常工作的一部分:我真的非常讨厌分号,基元,数组和集合API,而没有高阶函数。 而打开Strings是个玩笑。
参考: Scala如何改变了我在Schauderhaft博客上的 JCG合作伙伴 Jens 对Java代码的看法 。
相关文章 :
翻译自: https://www.javacodegeeks.com/2011/08/how-scala-changed-way-i-think-about-my.html