5

Recently I inherited 10 year old code base with some interesting patterns. Among them is static variables inside instance methods. Only single instance of the class is instantiated and I can hardly find reason to justify existence of those static variables in instance methods.

  1. Have you ever designed instance methods with static variables? And what are your rationales?

  2. If this pattern is considered bad then how to fix it?

Note: This question is not relevant to Static variables in instance methods

EDIT:

Some reading:

  1. static class and singleton
  2. http://objectmentor.com/resources/articles/SingletonAndMonostate.pdf
  3. http://www.semantics.org/once_weakly/w01_expanding_monostate.pdf
4

3 回答 3

4
  1. 这是单例模式的经典 C++ 实现,在 Scott Meyers C++ 的一本书中进行了描述。
  2. 单例是一个有争议的模式,因此对于单例的好坏没有全行业的共识。

单例的替代方案是纯静态对象。这个问题有很好的讨论。

于 2012-08-10T02:46:47.363 回答
2

我唯一一次在可实例化的类中使用静态字段是作为常量。

一般来说,您希望将您的类创建为完全静态的或完全可实例化的(您可能希望保持静态的常量除外)。对于单例类,它们的行为方式几乎相同。混合这两种技术的危险在于,如果你决定让这个类不再是单例的,你可能会在你现在的多实例类中遇到一些奇怪的行为。

于 2012-08-10T02:51:31.297 回答
2

拥有静态变量在过程函数中很有用,因为它可以用作一种范围有限的全局变量。

我可以看到在方法中执行此类操作的唯一原因是让变量在多次调用中保持不变,而不必声明没有其他用途的成员变量。老实说,我觉得这只是懒惰的编程,应该避免。

于 2012-08-10T03:38:39.173 回答