And*_*asT 5 c++ ide coding-style code-completion
Scott Meyer关于非成员函数增加封装并允许进行更优雅的设计(在设计方面)的论点在我看来非常有效。看到这里:文章
但是我对此有疑问。(似乎也是其他人,尤其是图书馆开发人员,他们通常完全忽略了这一点)
使用成员函数时,代码通常看起来更好,更逻辑。不过,这可能是一种后天的品味,只需要花些时间先熟悉一下算法,然后再研究对象。(不寒而栗)
所以也许我只有一个问题:
使用成员函数,我 和我的IDE都知道该类可以做什么。
对我来说,这是巨大的!我没有使用不支持成员函数代码完成功能的编程方式。在精心设计的库中,它完全替代了我的文档。即使我看了一下api doc,通过成员列表进行浏览也绝对是自然而合乎逻辑的,而且我可以确定,这就是结局。如果该方法不存在,我可以放心地假设它不存在,并且可以写我的非成员非朋友。
我在STL中提出了这一点,因为,很高兴看到算法与基本组件不同,并且因为您已经习惯了它。
我还没有看到可以告诉我在特定类上可以使用哪些非成员函数的IDE。
这实际上是我的问题:是否有一个IDE(或IDE功能)可以帮助执行此代码约定?
我过去碰到过这个东西。
当时我的想法很笨拙,但是完成了工作:名称空间。
我所做的是
namespace myclass
{
class MyClass
{
...
};
MyClass operator+(const MyClass& lhs, const MyClass& rhs){...}
}
Run Code Online (Sandbox Code Playgroud)
我认为 IDE 不可能告诉您可以在类中使用的所有非成员函数。使用模板,列出所有此类功能实在太困难了。IMO,您所能期望的最好结果是 IDE 能够在编译之前告诉您您尝试进行的调用是否有效。即使这样,也需要在 IDE 中进行一些严格的类似编译的过程。
我了解您如何使用成员函数来替代经典类中的文档。但斯科特·迈耶建议的设计并不是提供复杂功能的类,而是提供基本功能的类。复杂的功能来自其他地方,原始类可能知道也可能不知道,这并不重要。这都是这个想法的一部分。但你是对的。在这种情况下,就重新需要经过深思熟虑的文档。