据我所知,不建议在Web应用程序中使用静态变量。现在我的问题是,建议在Web应用程序中使用静态方法吗?是静态方法使用系统内存作为静态变量使用吗? 请澄清我的疑问。 提前完成。
答案 0 :(得分:7)
是的,建议在Web应用程序中使用静态方法。
静态变量在Web应用程序中的使用非常有限,因为所有线程都将共享相同的变量。
当涉及到方法时,所有线程都访问相同方法并不是问题,因为方法本身不会发生变化。对于每次调用方法,方法中的本地数据仍然是分开的,因此同时调用相同方法的多个线程不是问题。
一般来说,如果方法不依赖于任何实例数据,那么它应该是静态的。即如果一个方法可以是静态的(没有任何其他方法),它应该是。
答案 1 :(得分:1)
您应该避免使用静态变量的原因是它们通常用于提供global state。这打破了封装,并使维护和调试程序更难,因为任何代码都可以改变你的变量。
在像ASP.NET这样的线程环境中,由于多个线程可能使用非确定性结果编辑相同的静态变量内容,因此情况更糟。
另一方面,静态方法可能是一件非常好的事情。它们提供referential transparency,这意味着相同的输入将始终产生相同的输出,并且没有副作用改变状态。这使得多线程访问更容易推理,因为线程不会通过更改共享变量来影响其他人的处理(假设您当然没有使用静态变量)。它还可以使单元测试更容易,更稳健,因为您不需要在输入和预期输出的同时测试世界的基本状态。
答案 2 :(得分:0)
建议避免使用静态数据,因为如果数据是可变的,它会引入并发问题。
不需要避免不使用可变静态数据的静态方法;有时它们对于不需要特定于任何特定实例的功能有意义。