【发布时间】:2010-11-28 22:16:27
【问题描述】:
假设我有或将要编写一组相关的函数。假设它们与数学有关。在组织上,我应该:
- 编写这些函数并将它们放在我的
MyMath命名空间中并通过MyMath::XYZ()引用它们 - 创建一个名为
MyMath的类并将这些方法设为静态并引用类似的MyMath::XYZ()
为什么我会选择其中一个来组织我的软件?
【问题讨论】:
-
一方面,与类和静态方法相比,命名空间是语言中较新的补充,从被称为“C with classes”的时候就在语言中。一些程序员可能更喜欢旧功能。其他一些程序员可能正在使用旧的编译器。只是我的 $.02
-
@Rom:你对“老程序员”是对的,但对“老编译器”是错误的。命名空间从 eons 开始就被正确编译(我使用 Visual C++ 6 使用它们,可追溯到 1998 年!)。至于“带类的 C”,这个论坛中的一些人在发生这种情况时甚至还没有出生:用它作为一个论据来避免标准和广泛的 C++ 特性是一个谬论。总之,只有过时的 C++ 编译器不支持命名空间。不要以该论点为借口不使用它们。
-
@paercebal:一些古老的编译器仍在嵌入式世界中使用。不支持命名空间可能是人们在为每个人每天都与之交互的各种小型 CPU 编写代码时需要忍受的最小不便之一:您的立体声音响、微波炉、汽车中的发动机控制单元、交通信号灯等。只是为了明确一点:我并不是主张不要到处使用更好、更新的编译器。 Au conrare:我完全支持最新的语言功能(RTTI 除外;))。我只是指出存在这种趋势
-
@Rom:在当前情况下,问题作者有选择权,因此显然,他/她的编译器都没有编译命名空间代码。由于这是关于 C++ 的问题,因此必须给出 C++ 答案,包括在需要时提及名称空间和问题的 RTTI 解决方案。给出一个 C 答案,或者一个 C-with-classes-for-obsolete-compilers 答案是无关紧要的。
标签: c++ namespaces static-methods