如何更好地学习"not pay for what you don't use"?

How can I better learn to "not pay for what you don't use"?

本文关键字:don you what use for pay 何更好 更好 not 学习      更新时间:2023-10-16

我刚刚得到了这个问题的答案,在底线告诉我:"做X没有意义,因为它会让你为你可能不会使用的东西付费。

我发现这句格言很难遵循;我的直觉更倾向于看到我认为清晰的语义,将事物定义为"在它们的位置上"。更一般地说,我不会立即意识到特定设计选择的隐性成本和秘密关税是什么?

这是否包含在C++的(非参考)书籍中?网上有没有相关的地方可以更好地启发自己遵循这个原则?

在您呈现的情况下,它并不像看起来那样笼统。

做X没有意义,因为它会让你为你的事情付出代价 可能不使用。

这只是一个声明,如果可以的话,请避免使用虚函数。它们会增加函数调用的开销。

虚拟函数通常可以通过使用模板和常规函数调用来重新设计。一个标准::示例是std::vector。 例如,在Java中,Vector实现了可在算法中使用的接口。通过虚拟函数调用完成。 std::vector使用迭代器。

尽管这个问题过于宽泛并要求提供场外材料,但我认为它足够有趣,值得回答。请记住,C++最初只是"带有类的C",今天仍然可以编写基本上是C的代码,而无需使用C++给你的任何很好的抽象。例如,如果您不想要使用异常的成本,请不要使用它们,如果您不想要 RTTI(虚拟函数)的成本,请不要使用它们,如果您不想要使用模板的开销......等。

至于资源,我将打破规则并推荐游戏编程模式,尽管名称是编写高性能C++的良好通用指南。

我怎样才能更好地学会"不为不使用的东西付费"?

"不为不使用的东西付费"的关键是抽象。当您清楚地了解类或函数的用途时,您可以添加类和函数正常工作绝对必要的数据和参数,同时尽可能减少开销。

您必须非常警惕地向类中添加成员变量,成员函数(虚拟和非虚拟)。每个成员变量都会增加类的内存需求。每个成员函数都需要维护。虚拟成员函数的存在增加了类的内存需求,并且在运行时会受到很小的损失。

你必须对函数的参数非常警惕。您不希望用户承担提供没有意义的参数的负担。你也不想通过做出隐藏的假设来遗漏任何论点。