所以,假设我在离散数学的世界里工作,我有一些函数
CCD_ 1。
有了这个函数,我可以进行类似f(a,b,c) = d
的计算。(我故意含糊其辞)。
现在假设我想用一些现代OO编程语言显式地实现这种计算。所以我用b
和c
初始化ClassA
类的一个名为a
的变量,依此类推。然后呢?哪个对象应该拥有计算?或者它可能是一个初始化器。它可能是一个静态函数吗?
我本可以:
- CCD_ 7
- CCD_ 8
- CCD_ 9
- CCD_ 10
f: A x B x C -> D
1
都是合理的选择,不是吗?
在这种情况下,对称性是否应该要求我实现所有这些选项?
我更愿意完全避免构造函数的方法,但除此之外,我不知道除了假设基本上是任意的信息之外,还能取得什么进展。
那么,哪个对象应该拥有函数$f$(如果有的话)?
要给出最佳答案,了解您使用的变量类型非常重要。
oop中一个非常重要的度量是实现高内聚。内聚性是一个模块的元素属于一起的程度。如果变量a、b和c属于特定的上下文,那么最好将它们放在一个类中。如果它们在一个类中,你不必担心哪个类应该拥有计算(你的第四个解决方案)。
你的最后一个建议,使用静态函数也是可以想象的。这种方法经常用于不同语言的数学库(例如Java:数学类)