1

假设我有以下定义:

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){}
}

但这不起作用(出于对我来说并不完全显而易见的原因,我不得不承认......)。除了使代码可折叠之外,是否有一些有效的、类似的、没有任何影响的东西?

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

4

1 回答 1

2

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

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

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


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

namespace test {
    // Test 1 {{{

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

    // }}}


    // Test2 {{{

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

    // }}}
}

{{{,}}}是默认设置,但可配置,foldmarker.)

于 2012-10-04T09:13:33.043 回答