编码散记

开发习惯

  • guava,程序员的好朋友.
  • controller层, 不要放有关业务的代码.业务代码放service层.
  • 如果if(){}else if(){}…..>=3 个if, 个人觉得,用switch case 比较好.
  • 有些功能尽量使用java官方工具类.不要自己写,比如StringUtils,CollectionUtils,Arrays等.
  • 合理规范注释, 前人编码注释清晰了, 后人改动思路就明了了.还有就是命名的规范(代码改动,更新注释).
  • 尽量不要写重复代码,多次使用的代码抽出来独立成为一个方法调用,private或public根据具体业务情况而定.
  • 生产代码禁止以System及Throwable.printStackTrace的方式输出日志信息, 必须用Logger替代, 注意log等级.
  • controller层是前台和后台交互的.接口单一职责.一个接口一个功能(如果是在controller层进行权限控制的话,能更好的进行权限控制), 尽量清晰.不过service层可以提高代码复用率.

一些技巧

  • 运用set的key不能重复, 可以去重.

有坑的点

  • 开发中还是特别要注意new object的这个问题.
  • 要注意map是无序的,千万不要数据库排序查询出来结果之后,放map.
  • BigDecimal.add,subtract,multiply,divide,返回的是一个new object,要注意.
  • get/set,方法中最好别写逻辑,报错console不会提示,只能自己一步步debug进去看异常.
  • 注意Integer(-128~127)值的==和equals比较,(-XX:AutoBoxCacheMax这个参数可以了解下)

性能相关

  • 利用好缓存, 缓存最常用最适合的地方:数据字典.
  • for循环内避免查询处理相同的数据, 多次使用的数据放for循环外面.

关于工具

  • chrome开发者工具: 点击代码窗口左下角的那个’{ }’(pretty print) 标签, 能格式化被minify掉的css/js.
  • chrome开发者工具: 可以设置网络的访问速度来模拟一个网络很慢的情况.(network->no throtting->随意设置).
Fork me on GitHub