大型初始化列表的缺点?

5 c++ initialization-list

在我的雇主,政策是我们在构造函数中使用初始化列表,因为它更有效.

但是,我正在开发一个有45个数据成员需要初始化的类.根据策略,这必须在构造函数的初始化列表中完成.

除了可读性之外,大型初始化列表的缺点是什么?

CB *_*ley 8

您可以在多个物理源代码行上格式化成员初始值设定项列表,因此不必存在可读性问题.

更大的问题显然是你有45个数据成员的类.没有什么能使这些课程变得特别容易.


AClass::AClass( type1 val1
              , type2 val2
              // ...
              , type45 val45 )
: mem1( val1 )
, mem2( val2 )
// ...
, mem45( val45 )
{
}
Run Code Online (Sandbox Code Playgroud)

我认为它的可读性不亚于:

AClass::AClass( type1 val1
              , type2 val2
              // ...
              , type45 val45 )
{
    mem1 = val1;
    mem2 = val2;
     // ...
    mem45 = val45;
}
Run Code Online (Sandbox Code Playgroud)


Nic*_*dad 8

我认为可能值得退一步了解为什么您的班级有45个数据成员.这通常表明你的班级做了太多事情,并且有太多单独的责任,这将使这个班级很难维持一段时间.

听起来你可能需要将你的类分成单独的功能块,并让'controller'类委托给子类.这将大大降低代码的复杂性.