我遇到了一些关于我希望修复的代码风格的怪癖,即命名空间的使用。首先让我说,我目前是我特定项目的唯一软件工程师,并且无法获得更高级别的工程师来指导和帮助我。我发现这特别令人担忧,因为我担心我正在开发非常hacky的做法,当我在不久的将来尝试换工作时,这会让我笑出房间。
最近我一直在关注并遵守谷歌风格指南。当我得知我一直在做“使用命名空间标准”的过程时,我有点震惊。不赞成。一般来说,我的大多数项目都相对较小,几乎没有机会重用我的课程。然而,现在我已经做了更多的研究和学习,我意识到为什么我的做法不受欢迎,我正在寻求改进我使用命名空间和范围运算符的方式。结果,我有以下问题:
什么时候最好定义一个新的命名空间?我知道这是一个奇怪的问题,而且我知道不属于某个类的函数或变量可以在命名空间中组合在一起。但是,假设我有一个仅由类组成的程序。不定义命名空间是不好的做法吗?或者是否应该为项目单独创建一个新的命名空间,以防以后有人想与它交互?
我知道这已经引起了令人作呕的争论,但是什么时候使用“std::”比较好?我问是因为我最近读到了如何更好地使用 C 标准库的“包装”版本(例如,cstdlib 与 stdlib.h)。我更改了一些源代码以进行实验。我立刻觉得奇怪的是,G++ 没有因为我没有使用 std::printf() 而不是 printf() 而对我大喊大叫。我现在的问题是在显式范围放置方面我应该在哪里停止?例如,编译器不会对我大喊 size_t 或 uint8_t,我是否也必须在它们前面放置“std::”?什么被认为是最佳实践?
是否考虑仅在您正在使用的功能上调用“使用”?也就是说,我说的是我有一个班级并且会做类似“使用std :: endl;”之类的事情。在实现特定类的 .cpp 文件中。
编辑添加第四个问题: 4. 为派生类编写代码时,无论何时调用基类中的函数,即使基类中的函数不是虚拟的,执行“Baseclass::function()”是否有意义并且不能超载?这会阻碍或提高可读性吗?
感谢所有的帮助。我发现这个网站是一个很好的资源!