Kri*_*ato 11 c++ whitespace initialization
你是如何处理它们的?我有一些类(通常持有统计等类),还有一些20+成员变量和初始化列表结束很长,超出页面宽度,如果我没有手动缠绕.你试图打破这样的类或你在一些其他的方式解决这个问题?
它看起来并不很整洁,但有时我写在列表中的变量对方像这样的顶部:
myConstructor(var1, var2, var3, ..., varN) :
member1(var1),
member2(var2),
member3(var3),
...
memberN(varN)
Run Code Online (Sandbox Code Playgroud)
如果我不手动环绕,初始化列表会很长,超出页面宽度
一种方法就是重构:例如,代替传入4个原始变量("顶部","左","宽度"和"高度"),只是在通过一种化合物变量("矩形").
或者,只是与源代码布局有关:
class Foo
{
int m_a;
int m_b;
int m_c;
public:
Foo(
int a,
int b,
int c
)
: m_a(a)
, m_b(b)
, m_c(c)
{
}
};
Run Code Online (Sandbox Code Playgroud)
超出页面宽度
好吧,首先,您应该决定页面宽度并坚持下去.如果需要,可以使用编辑器中的自动换行.读取大于窗口大小的代码确实很困难,尤其是对于使用终端的vi或emacs的同事而言.选择页面宽度并坚持下去 - 这意味着将这些初始化程序列表包装到多个(可能很多)行上.
你试着分解这些课程吗?
20是很多参数,它可能值得分解."上课"通常是代码气味,表明重构是必要的.
它并不自动意味着你应该解决问题,指南总是有例外.但是,绝对认为它是一种选择.
当你在头文件中声明它们时,你(或者你可以)用评论对它们进行分组吗?例如:// These next few parameters are for file IO并且// These next parameters are for the widget,这将为您提供一个好的模板,以便为哪些对象提取抽象.
整体上非常大的类表示很多复杂的状态,而复杂的状态往往会导致错误.你应该像功能一样,更喜欢让它们保持小巧和专注.
{您的示例代码}
我认为这是非常可读和"整洁",虽然它可能是相当长的列表.正如我所提到的,为了解决这个问题,我会考虑将其分解为更小的类.