我是您当前公司的新员工,正在处理由我的直接团队领导编写的项目。公司通常不使用C++,但我的同事用C/C++编写了有效的代码。只有我们两个人知道如何使用C++(我和我的领导),因此没有第三方意见可以参与其中。
在我对项目有足够的了解后,我意识到整个结构非常特殊。
实际上,它由一个单一的编译单元组成,其中makefile仅将
然后,该头文件包含项目中包含的所有源文件,因此看起来像一个非常大的列表。
尝试理解其背后的逻辑后,我意识到对于该项目来说这种方式确实有效。因为每个单元可以在不访问任何其他单元的情况下运行,所以我曾经问他为什么要这样做,但却遭到了抵触的反应:
“嗯,它能运行,不是吗?如果你认为自己有更好的方式,那就按照自己的想法去做吧。”
因为我真的很难理清这种结构,所以现在我正在采用“通常”的结构来编写实现,同时只对整个项目进行必要的更改,以演示我会如何设计它。
我认为存在许多缺点,从混合连接器和编译器工作的项目结构开始就无法良好服务;再到可能导致冗余或模糊结果的优化,更不用提一个干净的项目构建需要大约30分钟,我认为这也可能是由于结构造成的。但我缺乏知识来列举实际而非假设性的问题。
既然他的论点“按我的方式工作,不是吗?”是正确的,我希望能够向他解释为什么这是一个坏主意,而不是显得过于挑剔。
因此,这种项目结构实际上可能会引起哪些问题呢?或者我是过度反应了,这种结构完全没问题吗?
在我对项目有足够的了解后,我意识到整个结构非常特殊。
实际上,它由一个单一的编译单元组成,其中makefile仅将
main.hpp
列为唯一源文件。然后,该头文件包含项目中包含的所有源文件,因此看起来像一个非常大的列表。
#include "foo.cpp"
#include "bar.cpp"
尝试理解其背后的逻辑后,我意识到对于该项目来说这种方式确实有效。因为每个单元可以在不访问任何其他单元的情况下运行,所以我曾经问他为什么要这样做,但却遭到了抵触的反应:
“嗯,它能运行,不是吗?如果你认为自己有更好的方式,那就按照自己的想法去做吧。”
因为我真的很难理清这种结构,所以现在我正在采用“通常”的结构来编写实现,同时只对整个项目进行必要的更改,以演示我会如何设计它。
我认为存在许多缺点,从混合连接器和编译器工作的项目结构开始就无法良好服务;再到可能导致冗余或模糊结果的优化,更不用提一个干净的项目构建需要大约30分钟,我认为这也可能是由于结构造成的。但我缺乏知识来列举实际而非假设性的问题。
既然他的论点“按我的方式工作,不是吗?”是正确的,我希望能够向他解释为什么这是一个坏主意,而不是显得过于挑剔。
因此,这种项目结构实际上可能会引起哪些问题呢?或者我是过度反应了,这种结构完全没问题吗?