language-agnostic - 避免静态方法过度使用的技巧

标签 language-agnostic static-methods

我正在重构一些代码,并且正在查看一个名为 HFile 的类。 HFile 具有所有私有(private)构造函数,因此您实际上无法创建它的实例。而不是创建 HFiles 的实例如下:

var file = new HFile('filename')
file.Save()

所有 HFile 交互都是通过静态方法处理的。因此,如果我想保存一个文件,我会调用:
HFile.save('filename')

然后在内部创建一个 HFile 实例,然后保存。显然,不了解整个故事的任何读者都必须保留判断力,但似乎使用静态方法在我的工作场所变得非常流行。所以我想知道是否有使用静态方法的良好原则/最佳实践可以帮助一群人坐下来回顾他们对静态方法的使用。

最佳答案

大量静态方法/静态类是过程炎的症状——用面向对象的语言编写过程代码。我所知道的消除这种思维的最好方法是彻底理解面向对象的原则和实践。使用测试驱动开发并强制代码可测试会有所帮助,因为为静态类编写测试要困难得多。最终,如果您使用 TDD,您自然会倾向于更解耦的 OO 架构,即使只是为了减轻测试的痛苦。

关于language-agnostic - 避免静态方法过度使用的技巧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2165595/

相关文章:

algorithm - 什么是模拟和比较旅程的简单系统?

language-agnostic - 在 Wolfram Alpha 上显示为加载屏幕的元胞自动机是什么?

java - 以下 "private static inner class"实现正确吗?

python - 如何在定义全局方法时从继承类中动态选择子类

java - 为什么我不能以这种方式在静态方法中返回任何内容

algorithm - 鉴于您知道发生了某些变化,如何推断未知变量的状态?

language-agnostic - 我在哪里存储哈希表或字典键名

algorithm - 使用旅行商求解器确定哈密顿路径

c++ - 为什么静态方法会覆盖基类非静态方法?

java - 是否可以将 Eclipse 配置为在没有静态导入的情况下使用 "favorites"?