就设计而言,我认为转换到C++会带来很多好处。
这可能取决于谁来在C++中决定设计。
我们现有的代码只需要摆脱所有隐式类型转换,因为C++对此要求更严格,然后它就可以像往常一样编译和运行。
情况并不是那么简单。如果您更改编译器选项(或文件扩展名)以切换到C++,您的代码将无法直接编译(您需要检查并进行更改)。
此外,您现有的C代码库将成为编写不良的C ++代码库。
还可能引入各种微妙的错误,即使是经验丰富的C开发者也几乎不可能找到(例如,在C和C++中,数组的sizeof操作符的行为不同,但熟练掌握C / 初学C ++的开发人员甚至不会考虑其代码中的熟悉sizeof实际上做了意料之外的事情)。
原因是“Linux开发人员知道C”,但很难找到精通C ++的Linux开发人员。
这不是一个有效的理由(如果您在网上发布“寻找C ++ Linux开发人员”的职位,您应该会得到一些不错的简历-取决于您的报价)。
这可能是您公司中能够做出这个决定的人的信念,或者只是他们给出的借口来摆脱您。以下是一些可能适用于您情况的反对转换的原因 - 这也是您的经理可能考虑的:
- 编写代码库的人可能是优秀的C开发人员,但不懂C ++,或者是初学C ++的开发人员和/或质量差的C ++开发人员。
优秀的C开发者往往不适合成为优秀的C++开发者(因为在C++中最佳实践完全不同于C,并且在许多情况下,C中的最佳实践与C++中的相反)。这是一个问题,因为C++代码看起来对C开发者来说足够熟悉,以至于他会认为自己的经验同样适用于C++(而C中的良好设计决策通常会导致C++中的糟糕设计决策)。
即使他们可能是优秀的C++开发者,但如果是这样的话,你的经理应该不知道(如果他们是作为C开发者被聘用的,他们的C++技能很可能从未在面试中提到过)。
- 你的高级团队成员可能对你的应用程序逻辑有很好的理解。如果你的应用程序转换为C++,他们可能不得不离开(并被C++开发人员取代)。这样的变化将失去非常熟悉你问题域的团队成员。根据你特定的问题领域,这样的损失可能是巨大的。
根据你的代码库的大小和结构,转换到C++可能是一个非常好的决策。你没有提供足够的细节让我们知道是否是这种情况。
例如,我曾经看到过一个大型的C代码库,在多年的发展中,它以不良的方式重新发明了C++(伪类支持虚函数表和继承-带有指向基本结构的void*的结构或者基本结构具有指向动态创建的特定数据的void*-等等)。
以后作为参考会很好,
因为我一直认为具备C++知识的
Linux开发者不难找,但我可能完全错误。
他们不应该难以找到,但这仅适用于项目开始阶段。没有一个好的经理会轻易地更换那些掌握问题领域的经验丰富的开发人员,只为了几个设计决策而雇佣新人。
如果你能提供更好的转换理由,他们可能会考虑。对于经理来说,切换的好理由包括较低的维护成本、较低的开发成本、较低的风险、较少的工作量、更好的进度报告等等。
如果你想继续推动这个变化,你将不得不在这些领域找到一些好的论据,并对他的“Linux开发者知道C”提出一些好的反驳。
你的观点应该足够好,能够克服我上面提出的论据。