我正在编写一个C ++项目,并且正在考虑编写一些总是具有相同参数和相同输出的函数,而且不同(和不相关)的类将使用它们。但我现在不情愿,因为我觉得这样的方便"函数不是应该的OOP,我应该为这些函数编写一个最小的类。那么,从C ++的角度来看,便利函数是一个很好的OOP编程实践吗?这是不好的设计的标志吗?
举例说明:
我们假设我们有两个班级class Sphere
和class Pillow
。 Bot有一些成员变量char[8] hash
用于某些(可能是不同的)散列原因,但总是使用相同的散列算法。现在我有三个选择:
makeHash()
makeHash()
Sphere
和Pillow
子类我不喜欢第一个,因为它会创建重复的代码而我不喜欢最后一个选项,因为它会导致"类的集群"其中每个类或多或少是另一个类的相对(这显然是糟糕的OOP)。
当然,OOP更像是一门艺术(有时是宗教),而不是一门精确的科学。但是在OOP设计中创建便利功能通常是一种很好的做法?
答案 0 :(得分:5)
如果你坚持OOP设计,那么你的char[8] hash
将是一个真正的Hash
课程。然后这解决了你的问题。
答案 1 :(得分:2)
将公共代码分解为单独的模块始终是一种好习惯,因为它可以减少代码重复,并允许您更改为一段代码分配描述性名称。
为了保持代码模块化(即减少“涟漪效应”和“更改内容”),找到一个用最少量依赖项对一段代码进行建模的概念是完全合理的。
一个全局函数,它只依赖于它的参数并且没有副作用(即返回值中返回唯一的结果),因此非常有意义。