1. 不用var。var是可以被不断修改的,而val是不能被修改的。使用val而不是var能让你的程序更强壮,bug更少,更好调试,更容易测试,在并发条件下,更容易调优而获得更好的性能。数学证明我们不用var是没问题的。
2. 不用mutable的collection,和var同样的道理。
3. 不用null,在java中,我们把null当作一个magic value给return回来,等待调用方进一步判断。但这非常容易让你的代码crash,而且你要到处进行判断。在scala中,可以用Option的,可以用Try,scala有好几种类似的结构,大家可以都看看。
4. 不要使用throw。直接抛出异常是个坏习惯(我不是说抛异常是个坏习惯,但抛的方法是可以更讲究的),而且你在多线程的情况下,你的异常抛给谁?在Scala中,你可以封装你的异常,把它作为一个值来返回,可以看一下Try[] ,不是try/catch的try, 是scala.utils.Try,和Option非常像。我不推荐使用Either用来处理成功和失败的混合情况,Left和Right多烧脑。
5. 不用thread。除非你要玩最底层,从头写个akka或者netty, 我觉得你一般是用不上thread的。actor最好也不用,多用Future来设计你的多线程程序。
6. case class和match用的好可以让你的程序更易读。极端点你都可以不用if, 但没必要,我主张能用if还是用if, 因为if其实很多时候更高效,更易读。还有scala的各种block是一个值,你可以直接使用,很多java程序员往往一开始不习惯这么干。比如说 val a = if (isAxxx) 1 else {......}
7. 减少继承的层级。弄一大堆trait来mixin,你这是在把scala导向c++。如果你只是像重用代码,可以通过传递一个function,或者纯粹oo的aggregation模式.

最新文章

  1. MS SQL 统计信息浅析上篇
  2. 【C#】添加引用方式抛出和捕获干净的WebService异常
  3. BZOJ3173 TJOI2013最长上升子序列(Treap+ZKW线段树)
  4. 标准sql语句,学习
  5. linux基本命令(2)-备份压缩命令
  6. 101个LINQ示例,包含几乎全部操作
  7. 李洪强iOS经典面试题12
  8. Android Camera 流程梳理
  9. 连接各种数据库神器———DbVisualizer
  10. mac中遇到的mysql编码问题
  11. (转) unity 在移动平台中,文件操作路径详解
  12. Repeater中使用倒计时
  13. jquery不兼容input的change事件处理
  14. time模块的用法和转化关系
  15. forms组件
  16. MySQL的初次见面礼基础实战篇
  17. 使用nginx反向代理处理前后端跨域访问
  18. HTML中CSS入门基础
  19. python可视化
  20. 在线词云制作tagxedo

热门文章

  1. python新手---学习第一天
  2. ES入门笔一
  3. printf输出格式介绍(转)
  4. 分析DuxCms之AdminUserModel
  5. django-团队简介的网页
  6. 0516js综合练习
  7. 附近的人,附近的卖家(geohash+前缀树)
  8. SSM-Spring-17:Spring中aspectJ注解版
  9. canvas实现3D魔方
  10. c# xml操作(二)