C++ 单步返回语句或多步返回语句
例1:C++ 单步返回语句或多步返回语句,c++,coding-style,C++,Coding Style,例1: int length() { return strlen(random_string); } 例2: int length() { int str_length = 0; str_length = strlen(random_string); return str_length; } 问题: 我遇到过许多函数,其中一行代码就可以满足该函数的需要,但我记得一些关于避免这种快捷方式的事情
int length()
{
return strlen(random_string);
}
例2:
int length()
{
int str_length = 0;
str_length = strlen(random_string);
return str_length;
}
问题:我遇到过许多函数,其中一行代码就可以满足该函数的需要,但我记得一些关于避免这种快捷方式的事情
在某些情况下,一个比另一个更合适,或者我应该一直使用更简单的代码。我永远不会使用第二个示例,因为初始化then赋值只是无缘无故占用了空间 我可能会做以下几点:
int length()
{
const int str_length = strlen(arbitrary_string);
return str_length;
}
这有两个原因:
int
,因此无论如何都不允许使用指定的返回值优化,即使是这样,也基本没有意义;及int length()
{
return strlen(arbitrary_string);
}
我永远不会支持你的第二个例子,因为初始化任务只是无缘无故占用了空间 我可能会做以下几点:
int length()
{
const int str_length = strlen(arbitrary_string);
return str_length;
}
这有两个原因:
int
,因此无论如何都不允许使用指定的返回值优化,即使是这样,也基本没有意义;及int length()
{
return strlen(arbitrary_string);
}
我要说的是,始终遵循示例1。它读起来更漂亮。如果中间变量名有助于可读性,或者应该将表达式拆分为多个语句,我才不会将表达式放在return语句中 不过,我绝不会建议使用示例2——初始化为0是毫无意义的。中间立场更好:
int length()
{
int str_length = strlen(random_string);
return str_length;
}
但是,很明显,
str_length
告诉您的内容并不比函数名strlen
告诉您的内容多。我说,始终按照示例1执行。它读起来更漂亮。如果中间变量名有助于可读性,或者应该将表达式拆分为多个语句,我才不会将表达式放在return语句中
不过,我绝不会建议使用示例2——初始化为0是毫无意义的。中间立场更好:
int length()
{
int str_length = strlen(random_string);
return str_length;
}
但是,很明显,
stru length
告诉您的内容并不比函数名strlen
告诉您的内容多。在大多数情况下,可读性总是胜过性能。如果您有性能关键的代码,那么就关注性能。然而,这是一个例外,而不是规则
始终追求可读性。在大多数情况下,可读性总是胜过性能。如果您有性能关键的代码,那么就关注性能。然而,这是一个例外,而不是规则
始终追求可读性。一般来说,代码应该易于阅读并明确目的。在你的例子中,我更喜欢较短的版本。关于长版本的语义没有额外的信息增益
一如既往,可能会有例外。特别是当返回值来自一个长而复杂的表达式时。然后,命名一些中间结果可能会有所帮助。一般来说,代码应该易于阅读,并明确目的。在你的例子中,我更喜欢较短的版本。关于长版本的语义没有额外的信息增益
一如既往,可能会有例外。特别是当返回值来自一个长而复杂的表达式时。然后,命名一些中间结果可能会有所帮助。采用多步骤方法的一个原因是,如果您决定添加一行来打印长度值,那么麻烦就少多了:
int length()
{
const int str_length = strlen(something);
printf("str_length = %d\n", str_length);
return str_length;
}
或者,如果要添加一些额外的断言:
int length()
{
const int str_length = strlen(something);
assert(str_length >= 0);
return str_length;
}
除此之外,这一切都是关于您认为最合适的内容[当然,除非您有严格的编码标准要遵循!]采用多步骤方法的一个原因是,如果您决定添加一行来打印长度值,那么麻烦就会小得多:
int length()
{
const int str_length = strlen(something);
printf("str_length = %d\n", str_length);
return str_length;
}
或者,如果要添加一些额外的断言:
int length()
{
const int str_length = strlen(something);
assert(str_length >= 0);
return str_length;
}
除了这一点,它是关于你认为最合适的(除非你有严格的编码标准,当然!)/p> < p>回答这个问题时,总是选择更容易阅读的解决方案,这在每种编程语言中都很重要,但是在C++中,它是非常重要的。 对于您的特定问题,C++开发人员最容易阅读的是选项号1,它是干净和简单的。但是如果你不得不写的那一行是这样的:
return (classA *)(function1(data1)->function2())->function3();
在这种情况下,总是选择分割线,因为即使你知道它现在做什么,你也很难弄清楚未来会发生什么
希望它有助于 回答这个问题,总是选择更容易阅读的解决方案,这在每种编程语言中都很重要,但是在C++中。 对于您的特定问题,C++开发人员最容易阅读的是选项号1,它是干净和简单的。但是如果你不得不写的那一行是这样的:
return (classA *)(function1(data1)->function2())->function3();
在这种情况下,总是选择分割线,因为即使你知道它现在做什么,你也很难弄清楚未来会发生什么
希望它对一个像样的编译器有所帮助,那应该不会有什么不同。选择一切