在c ++中声明和初始化变量时的最佳实践

时间:2017-02-17 16:29:31

标签: c++ variables declaration

由于我刚开始使用c ++,我正在尝试保持代码清洁,可读和正确。

我有一个问题,即在声明和初始化变量时最佳做法是什么。

在Bjarne Stroustrup的c ++编程原则和实践中,他建议如果可以,总是初始化变量。我明白了

没有提到的是在单行语句中声明变量的正确性,如下所示:

  int value1 = 0, value2 = 0, value3 = 0; 

反对使用三个不同的语句:

  int value1 = 0; 

  int value2 = 0;

  int value3 = 0; 

当然第二种方式更具可读性,可能是可管理的,但第一种方式是一种快速方式,我认为不建议这样做? 哪个是最佳做法,为什么?它会以任何方式影响编译吗?

感谢。

3 个答案:

答案 0 :(得分:5)

当我开始学习代码时,它帮助我在声明时分离变量。它帮助我通过将变量放在不同的行上来保持变量的组织。这两行的编码方式没有执行差异。但是,当您通过编程排名时,您的教师可能会建议这种格式。

  int value1 = 0, value2 = 0, value3 = 0; 

一旦开始处理大型项目,有助于保持代码的各个部分尽可能紧凑。在这个声明中,1行对3保持更整洁的代码。如果你做了这个声明数百次,那么1对3行代码就可以真正加起来。

答案 1 :(得分:4)

在编译速度方面,两种方法没有区别;区别在于代码的样式。话虽如此,如果变量是指针,声明相同数据类型的多个变量更容易出错。我将介绍以下两种方法:

方法1在某些情况下更容易出错

当您在一行中声明相同数据类型的变量时,例如您提供的示例:int value1 = 0, value2 = 0, value3 = 0;,这更容易出错。例如,如果要声明类型为int的3个指针变量,则执行以下操作:

int* value1 = 0, value2 = 0, value3 = 0; 

不是声明它们的正确方法,因为它意味着第一个变量是一个指针,但第二个和第三个变量是int类型的非指针;上述行可以改写为:

int* value1 = 0;
int value2 = 0;
int value3 = 0;

这不是我们想要的;我们想这样做:

int* value1 = 0;
int* value2 = 0;
int* value3 = 0;

因此,在这种情况下,单独行中的变量在同一行中声明它们将不会产生预期的效果。

注意:如果您确实想要在同一行中声明它们,那么您可以执行以下操作:

int* value1 = 0; int* value2 = 0; int* value3 = 0;

这将解决指针声明的问题,并且只能通过代码样式与单独的行不同。

方法2更令人愉悦阅读(这是基于意见的)

另一个问题是,在单独的行中声明变量的第二种方法提高了代码的可读性。请注意,这是基于意见的;有些人更习惯于在同一行上阅读它们,在这种情况下,方法1对他们来说更好。

总而言之,在您确定在同一行上声明变量后,不会影响代码的含义(对不起这里选择不好的单词),就像中所做的那样第一个标题,然后它归结为您喜欢的代码的样式。至于执行时间,它确实没有区别。

答案 2 :(得分:3)

两者都很好,并且对编译速度或发出的代码没有实际影响。最大的问题是为什么你首先需要函数中的三个整数变量。您希望尽可能缩短您的功能(但不能缩短),这意味着您通常不会有三个或更多变量。