便利功能是一种好的做法吗?

时间:2014-04-28 08:11:23

标签: c++ oop

我正在编写一个C ++项目,并且正在考虑编写一些总是具有相同参数和相同输出的函数,而且不同(和不相关)的类将使用它们。但我现在不情愿,因为我觉得这样的方便"函数不是应该的OOP,我应该为这些函数编写一个最小的类。那么,从C ++的角度来看,便利函数是一个很好的OOP编程实践吗?这是不好的设计的标志吗?

举例说明:

我们假设我们有两个班级class Sphereclass Pillow。 Bot有一些成员变量char[8] hash用于某些(可能是不同的)散列原因,但总是使用相同的散列算法。现在我有三个选择:

  • 为每个类实现成员函数makeHash()
  • 实现一个由类
  • 调用的便捷函数makeHash()
  • 重构完整设计以使同一父类的SpherePillow子类

我不喜欢第一个,因为它会创建重复的代码而我不喜欢最后一个选项,因为它会导致"类的集群"其中每个类或多或少是另一个类的相对(这显然是糟糕的OOP)。

当然,OOP更像是一门艺术(有时是宗教),而不是一门精确的科学。但是在OOP设计中创建便利功能通常是一种很好的做法

2 个答案:

答案 0 :(得分:5)

如果你坚持OOP设计,那么你的char[8] hash将是一个真正的Hash课程。然后这解决了你的问题。

答案 1 :(得分:2)

将公共代码分解为单独的模块始终是一种好习惯,因为它可以减少代码重复,并允许您更改为一段代码分配描述性名称。

为了保持代码模块化(即减少“涟漪效应”和“更改内容”),找到一个用最少量依赖项对一段代码进行建模的概念是完全合理的。

一个全局函数,它只依赖于它的参数并且没有副作用(即返回值中返回唯一的结果),因此非常有意义。