我正在尝试以可读的方式构建我的代码。我读过一种方法如下:
if(Init1() == TRUE)
{
if(Init2() == TRUE)
{
if(Init3() == TRUE)
{
...
Free3();
}
Free2();
}
Free1();
}
我喜欢这种做事方式,因为它使每个都保持FreeX
在它的匹配InitX
循环中,但是如果嵌套超过三个级别,它很快就会变得不可读并且超过 80 列。许多函数可以分解为多个函数,这样就不会发生这种情况,但是为了避免过多的嵌套而分解一个函数似乎很愚蠢。特别是,考虑一个对整个类进行初始化的函数,该初始化需要十个或更多的函数调用。那是十个或更多级别的嵌套。
我确定我想太多了,但是上面是否缺少一些基本的东西?可以以可读的方式进行深度嵌套吗?或者以某种方式进行重组,同时保持每个循环都FreeX
在自己的InitX
循环中?
顺便说一句,我意识到上面的代码可以压缩为if(Init1() && Init2()...
,但代码只是一个示例。每次调用之间会有其他代码InitX
可以防止这种压缩。