我正在编写一个C++项目,考虑编写一些具有相同参数和输出的功能,此外不同(且无关)的类将使用它们。但是我现在犹豫了,因为我感觉这样的“便利”函数不够面向对象,我应该为这些函数编写一个最小的类。那么,从C++的角度来看,便利函数是良好的面向对象编程实践吗?这是设计不良的标志吗?
以下是示例:
假设我们有两个类class Sphere和class Pillow。 两者都有成员变量char [8] hash,用于某些(可能不同的)哈希目的,但始终使用相同的哈希算法。 现在我有三个选择:
- 为每个类实现成员函数makeHash() - 实现一个被类调用的方便函数makeHash() - 重新设计整个系统,使Sphere和Pillow成为同一父类的子类
我不喜欢第一个选项,因为它会创建重复代码,我也不喜欢最后一个选项,因为它会导致“类族群”,其中每个类或多或少都是另一个类的亲戚(这显然是不好的OOP)。 当然,面向对象编程更像是一门艺术(有时是一门宗教),而不是一门精确的科学。然而,一般来说,在OOP中设计便利函数是一个好习惯吗?
以下是示例:
假设我们有两个类class Sphere和class Pillow。 两者都有成员变量char [8] hash,用于某些(可能不同的)哈希目的,但始终使用相同的哈希算法。 现在我有三个选择:
- 为每个类实现成员函数makeHash() - 实现一个被类调用的方便函数makeHash() - 重新设计整个系统,使Sphere和Pillow成为同一父类的子类
我不喜欢第一个选项,因为它会创建重复代码,我也不喜欢最后一个选项,因为它会导致“类族群”,其中每个类或多或少都是另一个类的亲戚(这显然是不好的OOP)。 当然,面向对象编程更像是一门艺术(有时是一门宗教),而不是一门精确的科学。然而,一般来说,在OOP中设计便利函数是一个好习惯吗?
Hash
类的一个好处是它使类型系统更有用(即编译器更强大!)。此外,还有一个很好的副作用:+1。 - Frerich Raabechar[8]
),而不仅仅是char
。 - alex