gpt4 book ai didi

c++ - 如何使大多数编辑器可折叠类实现的代码?

转载 作者:行者123 更新时间:2023-11-30 04:24:30 25 4
gpt4 key购买 nike

假设我有以下定义:

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只需关闭并重新打开命名空间即可。

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

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


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

namespace test {
// Test 1 {{{

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


// }}}


// Test2 {{{

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


// }}}
}

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

关于c++ - 如何使大多数编辑器可折叠类实现的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12722117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com