静态实用方法不是纯粹的面向对象编程吗?
Are static utility methods not pure Object Oriented Programming?
人们说静态实用方法在 OOP 中不好,因为它们不遵循 OOP 的做事方式。
我知道静态实用程序方法来自更传统的过程编程范例。人们说真正的 OOP 将在对象意义上对现实世界进行建模,将状态和行为封装为一个。
这是真的吗?
如果是这样,现代 OOP 中最好的做法是完全不使用静态实用方法吗?还是仍然普遍使用它们?
后一个问题更像是 'depends' 情况吗?
静态方法(无副作用)在计算机科学中名为 functions。
而且我认为函数式编程更优越是普遍共识。
面向对象编程的优点是state对它来说是迫在眉睫的,相对于FP可以让事情变得更直接。
但是在静态方法的情况下函数没问题。适用于低级值。如果情况是许多功能在更复杂的 类 上运行,则可能会有问题。也许那些类太复杂了,逻辑太绕了。
将 BigDecimal 与理论版本进行比较,后者具有加法、乘法等静态方法。函数可能会更易读。
简而言之,是的,静态实用方法违反了 OOP 范式。你应该使用它们吗?这取决于你想成为多少纯粹主义者,以及其他一些因素。有些人甚至 call them evil :)
不过我觉得你问这个问题很好。您对 OOP 了解得越多,以及它与软件开发的其他范式之间的区别,您在选择备选方案时就越清楚。
人们说静态实用方法在 OOP 中不好,因为它们不遵循 OOP 的做事方式。
我知道静态实用程序方法来自更传统的过程编程范例。人们说真正的 OOP 将在对象意义上对现实世界进行建模,将状态和行为封装为一个。
这是真的吗?
如果是这样,现代 OOP 中最好的做法是完全不使用静态实用方法吗?还是仍然普遍使用它们? 后一个问题更像是 'depends' 情况吗?
静态方法(无副作用)在计算机科学中名为 functions。
而且我认为函数式编程更优越是普遍共识。
面向对象编程的优点是state对它来说是迫在眉睫的,相对于FP可以让事情变得更直接。
但是在静态方法的情况下函数没问题。适用于低级值。如果情况是许多功能在更复杂的 类 上运行,则可能会有问题。也许那些类太复杂了,逻辑太绕了。
将 BigDecimal 与理论版本进行比较,后者具有加法、乘法等静态方法。函数可能会更易读。
简而言之,是的,静态实用方法违反了 OOP 范式。你应该使用它们吗?这取决于你想成为多少纯粹主义者,以及其他一些因素。有些人甚至 call them evil :)
不过我觉得你问这个问题很好。您对 OOP 了解得越多,以及它与软件开发的其他范式之间的区别,您在选择备选方案时就越清楚。