假设我有以下定义:
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){}
}
但这不起作用(由于我不得不承认的原因并不完全明白......)。除了使代码可折叠之外,是否有一些有效的,类似的,没有任何影响?
显然,它应尽可能便携,不依赖于任何特定的编辑器。
答案 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
。)