我目前正在从事一个Java项目,该项目定期从网站中删除数据,然后将其存储在MySQL数据库中。我目前使用的是静态方法,但我在网上看到,使用静态方法可能是不安全的。我不完全明白为什么。我应该重构我的代码来替换这些静态方法,还是安全地保留它呢?如果我要改的话,你能解释原因吗?
发布于 2020-07-16 07:57:30
这取决于案件。如果静态方法没有任何状态,则它们是安全的,这意味着该方法不会更改某些内部或全局变量(也是静态变量)。
如果方法使用并更改静态变量,可能会导致在您的应用程序中有许多线程时很难解决的bug。
此外,使用Mockito这样的框架进行测试也很困难,因为模拟静态方法需要特殊处理(比如使用PowerMock库)。
这些事实是最重要的原因之一,为什么先进的编码器可能不喜欢使用静态的东西。如果“好且容易”的静态方法能够在以后产生问题,并在测试中造成复杂和需要额外的库(最终您必须这样做),那么它有什么意义呢?
通常,如果需要某种内部状态,则首选单例。另外,在Spring框架中,人们倾向于避免静态的东西,而更喜欢默认为单例的bean。
发布于 2020-07-16 06:10:27
如果这是一个由一个开发人员维护的单线程应用程序,应该可以保持原样。
你打算写单元测验吗?这可能成为一个挑战,例如,Mockito将无法使用静态方法。
https://stackoverflow.com/questions/62928352
复制相似问题