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 に答える