有什么理由在方法的第二行中使用"return"吗?
Is there any reason to use the 'return' in the second line in the method ?
我有这样的代码,我们可以用两种方式编写
第一路
void func(int val)
{
if(val == 0)
return;
// Do something ...
}
第二路
void func(int val)
{
if(val != 0)
{
// Do something ...
}
}
问题:
有理由使用第一种方式吗?使用第一种方式(在C++或C#中)有什么优势吗
使用第一种方法的主要原因是减少源文件中的嵌套。
请参阅反转"if"语句以减少嵌套。
基本上,当"//做某事…"是大量的代码。
想象一下,有不止一个条件,看看这个:
if (...)
{
if (...)
{
if (...)
{
if (...)
{
if (...)
{
...
}
}
}
}
}
这个:
if (!...)
return;
if (!...)
return;
if (!...)
return;
if (!...)
return;
if (!...)
...
我认为,第二个更便于阅读
如果有一个或两个条件,差异是微不足道的。
是的,前面的回答中提到了这些优点。由于它在C++中被标记,因此在使用First Way的情况下,应注意释放分配的内存。
例如,可能有像这样的错误代码
void func(int val)
{
Foo *obj = new Foo();
if(val == 0)
return;
// Do something ...
delete obj; // Possible Memory leak
}
没有区别-是使用其中一个还是另一个完全取决于您对其中一个的主观偏好,受可读性、可理解性等因素的影响。
- 如果你想在定义的值上快速退出,那么在之前返回应该更好
- 但如果这种情况很少见,那么最好直接处理好数据
根据您使用的语言,对性能的影响应该更大,或者微不足道。
如果是为了清楚起见,那么在条件良好之后调用make一些函数。有些零件管理不同的案例,有些零件处理它。
应通过这种方式提高可维护性和可读性。
如果您以第一种方式调用,那么它就不会运行其余的东西。因为它直接返回。但如果使用第二种方式,则中的代码将运行。
相关文章:
- C++ 中的二维整数数组,每行中的元素数量不均匀
- 绘制二维矩阵的行和列
- 每像素字节数,每行字节数-如何在tess二的tessbaseapi.cpp中使用函数nativeSetImageByte
- C++ 如何从文本文件中扫描二维数组并对行求和?
- 如何将 50 行和 50 列的二维数组编码为一个为元素随机分配星号的函数?
- 在 C++ 的二维数组中添加行和列
- 删除二维矢量中的行
- 我们如何将电路板从 TXT 文件加载到二维数组中(没有行大小和列大小)
- 二维数组:计算行的总和和列的乘积
- 从命令行输入分配二维数组
- 将数组值(行)添加到二维数组C++
- 用C++将每行字数不同的文本文件读入二维数组
- 有什么理由在方法的第二行中使用"return"吗?
- 具有可变大小行的C++二维数组
- 如何将二维字符类型数组逐行保存到 c 中的.txt文件中
- 从行指针访问二维数组的行索引
- C++:二维数组,如何找到列中差异最大的行
- 二维哈希映射:行和列类型为指针的矩阵
- 从二维C++数组中提取行
- 二维数组每秒钟两行c++