如何使类实现的代码可以为大多数编辑器折叠?

时间:2012-10-04 07:18:39

标签: c++ oop folding

假设我有以下定义:

namespace test
{
    class Test1
    {
        void someMethod(double a);
        void someOtherMethod(double a);
        //...
    };

    class Test2
    {
        void someMethod(double a);
        void someOtherMethod(double a);
        //...
    };
}

这是一个示例实现(方法1):

namespace test
{
    // Test1
    // ----------------

    void Test1::someMethod(double a){
        // do something
    }

    void Test1::someOtherMethod(double a){
        // do something else
    }


    // Test2
    // ----------------

    void Test2::someMethod(double a){
        // do something
    }

    void Test2::someOtherMethod(double a){
        // do something else
    }

}

这是另一种实现方法(方法2):

// Test1
namespace test
{
    void Test1::someMethod(double a){
        // do something
    }

    void Test1::someOtherMethod(double a){
        // do something else
    }
}

// Test2
namespace test
{
    void Test2::someMethod(double a){
        // do something
    }

    void Test2::someOtherMethod(double a){
        // do something else
    }
}

实现方法的通常方法是通过方法1.方法2的结果是每个类的所有实现代码都可以在许多编辑器中折叠掉,这是我非常喜欢的一个特性。

我想知道是否有更优雅的方法来做到这一点,例如,无需为每个新类重新打开命名空间?我试过这个:

{
    void Test1::someMethod(double a){}
}
{
    void Test2::someMethod(double a){}
}

但这不起作用(由于我不得不承认的原因并不完全明白......)。除了使代码可折叠之外,是否有一些有效的,类似的,没有任何影响?

显然,它应尽可能便携,不依赖于任何特定的编辑器。

1 个答案:

答案 0 :(得分:2)

没有与编辑器无关的方式。 1 只需关闭并重新打开命名空间。

那就是说,我认为可折叠性被高估了。特别是,您的用例只是另一个问题的症状:您的文件太长。不要为每个文件定义多个类(除非类很小或与内在相关)。这是一个简单的经验法则,可以很好地解决您的问题。

如果你的代码文件超过几百行,请将它们分开。


1 也就是说,不同的编辑提供不同的解决方案。例如,你可以在Vim中做到:

namespace test {
    // Test 1 {{{

    void Test1::someMethod(double a){
        // do something
    }
    …

    // }}}


    // Test2 {{{

    void Test2::someMethod(double a){
        // do something
    }
    …

    // }}}
}

{{{,}}}是默认值,但可配置,foldmarker。)

相关问题