Scala如何改变了我对Java代码的思考方式

某些人主张将自己喜欢的语言作为启蒙的唯一方法,与同类别的另一种语言相比,生产率可以在两位数的百分比范围内提高。 我不相信 (当您比较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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值