3个每个人都讨厌的Java实践 - Miloš


你使用静态关键字吗?你抛出异常吗?你把数据放在会话中吗?这是三个每个人讨厌的java实践:

  1.   滥用静态
  2. · 抛出异常
  3. · 在会话中存储所有内容

 
1. 你不应该滥用静态
类包含静态属性。无需构造即可访问属性。
为什么这很重要?静态属性不是变量,它们是常量。所有实例的常量。
静态方法类似于过程化,这会破坏 OO 设计。
但是大多数Math库方法都是静态的,因为它们都是辅助方法,对辅助函数和实用函数使用静态方法。
不要将静态方法与多态混合。
直到最近,Mockito 才支持测试静态方法:Mockito 更喜欢面向对象和依赖注入,而不是难以理解和更改的静态程序代码。如果您处理可怕的遗留代码,您可以使用 JMockit 或 Powermock 来模拟静态方法。
  
2.按预期抛出异常
不要抛出业务逻辑异常,把业务逻辑泄露到外部。
不要反复抛出相同异常。
最后办法是翻译转化异常。
使用其他错误处理方法、谓词或 Optionals 来显示错误。异常应该通知错误、传播翻译后的错误或当场处理它们。
 
3. 不要将所有东西都存储在会话中
Web 应用程序是无状态的。会话为用户创建一个状态。在会话中存储大量变量是不好的做法。你需要存储用户状态吗?使用会话,例如,身份验证存储在会话中。您需要存储应用程序状态吗?使用缓存而不是会话。
在会话中存储数据本身并不是一个坏习惯。您需要在会话中存储身份验证。避免在会话中存储其他数据。无状态设计比有状态应用程序有更多好处。会话使用内存,可能导致竞争条件,并可能导致线程问题。
会话的替代方法是什么?会话的替代方案是:
  • 将会话存储在缓存中;以Map的形式
  • 将会话存储在数据库中