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