我对 C++ 还不够熟悉,不知道哪里需要这两个非常相似的重构(引入本地扩展和引入外部方法)。我知道强制使用这些的案例,但我想不出需要这个“技巧”的示例类。我正在制作 C++ 重构教程,以帮助新开发人员,但看起来我也需要你的帮助:)
如果你使用过它,请告诉我在哪里以及为什么使用它。提前致谢。
最佳答案
“外部”方法是操作类的方法,但不是类的成员。在 Java 中,这仅意味着其他类的(静态)方法将第一个类作为参数。在 C++ 中,您需要了解免费 函数。与 Java 不同,在 C++ 中,方法可以存在于类之外。 int main()
是最著名的一个。 STL 还包含免费功能。一个人进去看看就好了。
对于 Java,您链接的站点建议 "foreign methods are a work-around"并建议“引入本地扩展”作为替代重构。在 C++ 中,自由函数不是解决方法。这意味着引入本地扩展的压力要小得多。
此外,在 C++ 中,函数默认不是虚函数,对象通常按值传递。这意味着“引入本地扩展”技术经常会失败。
我希望这能说明您的方法的根本问题:您正在采用 Java 的重构技术来解决特定的 Java 弱点,并尝试将它们转换为具有一组完全不同的弱点的 C++。即使在有效的地方,它也常常是不必要的。
关于C++ 哪里需要本地扩展或外部方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5626521/