【问题标题】:Is there a quick way to know a class member's accessibility of a huge class?有没有一种快速的方法来了解班级成员对大型班级的可访问性?
【发布时间】:2020-12-29 04:45:19
【问题描述】:

我正在使用带有 Visual Assist 的 Visual Studio。

我发现如果一个类变得太大,你必须向上滚动以检查访问修饰符以了解方法或变量是否是公共的、受保护的等等。这需要一些时间,如果你可能会错过访问修饰符滚动太快。

有没有办法让我立即知道会员的可访问性?

(场景:探索虚幻引擎源代码...)

【问题讨论】:

  • 分成小​​班。上帝对象是坏的(其中包括这个原因)。
  • @πάνταῥεῖ 不确定可怜的老汤姆是否愿意为 Epic Games 工作。
  • 一些 IDE(例如 Visual Studio IIRC,也可能是 Eclipse)也有一个小树形视图,显示按可见性(或字母顺序)排序的类成员,以便快速导航。
  • 在包含标题之前只需 #define private public。现在,您可以放心,所有成员都是公开的 :-)
  • @Jeffrey:唉,这是未定义的行为。

标签: c++ visual-studio intellisense access-modifiers visual-assist


【解决方案1】:

像这样在每个类成员之前添加可见性是没有问题的:

class Foo {
    public:    float foobaz1();
    public:    void foobaz2();

    protected: int baz1();
    protected: std::string baz2();

    private:   int bar1();
    private:   double bar2();
};

不寻常的1,但语法正确。


好的,你提到虚幻引擎是一个你无法控制的项目。 对于这种情况,我会尝试找到一个体面的 IDE,它支持紧凑的树视图,它显示所有按范围排序的类成员,alhpabetically(或其他标准)以便快速导航。

任何支持智能感知的 IDE 都应该具有这样的功能,因为无论如何代码都需要进行粗略的解析。

我很确定 Visual Studio 支持这一点(不确定 VS Code)。 Eclipse 可能是,我不记得了,反正我很少使用这些花哨的东西,而且通常更喜欢把东西分解成更小的单元。

其他首选方法:

CTRLf,输入public,到达那里,然后往下看。至少比滚动快。


1)不过,c++ 家伙会把你送到 Java 罚球角。

【讨论】:

  • 我记得,存在或可能存在细微差别:编译器允许在可访问性标签边界重新排序数据成员。嗯。您没有在示例中显示任何数据成员。不过,在 OP 的使用中,这可能会破坏一些布局兼容性,不是吗?
  • @jthill 对数据成员(类成员变量)的工作方式相同。类布局等不会破坏任何东西。我根本不完全理解您的担忧。
  • 我明白了,重要的是可访问性本身,而不是标签的存在。 Here's what I was remembering,从那以后就放松了。
  • @jthill 我从来没有说过要改变已经存在的可见性,但只是对每个成员重复它顺便说一句。
  • 对。使用 C++03 允许任意布局重新排序,无论他们有什么难以理解的原因,可能会破坏为现有工具链设置的外部工具链。
猜你喜欢
  • 2011-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-11
  • 2017-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多