Possible Duplicate:
Namespace + functions versus static methods on a class
在哪里写最明智的方式,例如,一个看起来像的函数
点交点(const Line &L1, const Line &L2);
(假设我已经编写了类 Point
和 Line
)?
也许我可以使问题更精确一些:我正在考虑以下选项:
- 写一个全局函数(声明在line.h,写在line.cpp)
- 编写类
Line
的静态方法 - 使用命名空间。
- 改为编写函数
Point Line::intersection(const Line & otherLine);
我不喜欢最后一个选项,因为我不希望我的函数是“不对称的”(我的代码中还有其他几个这样的函数示例)。目前它们是全局函数(如选项 1 中所示),但我明白这不是“良好做法”。至于静态方法和命名空间,我还不熟悉这些,所以我不确定。
您认为什么是“最佳”设计?
感谢您的见解!
编辑:让您了解我的项目规模:50 到 100 个类(class)。
最佳答案
这真的取决于你想做什么。如果你只是在写一个非常小的程序,我真的不觉得把它写成一个全局函数有什么问题。但是,如果您的程序至少是中等大小,我会建议使用静态方法,因为您会将其功能与其处理的类组合在一起。
当然,您也可以使用命名空间来做到这一点。但是,我想您无论如何都会有一个 Line 类,因为它似乎很适合面向对象的编程风格。考虑到这一点,我真的看不出有什么理由让它成为一个命名空间而不是类 Line 的静态方法。如果我正在寻找相交方法,那肯定是我首先要看的地方!
我也没有发现最后一个选项有什么问题,但我更喜欢#2。
关于C++ : static method VS global function VS namespace VS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17535886/