例如,假设您有一段代码,该代码判断"boolean"标志是否为真以运行某个过程,如下所示:

if( my_flag ){
 doStuff();
}

我可以使用短路求值来编写它,这是考虑到求值结果对代码的其余部分没有价值,可以这样写:

my_flag && doStuff();

我见过这样编写的专业代码,从我的Angular 来看,它提高了可读性,消除了不必要的语法,但我不知道这是不是一个好做法,因为我也看到了许多使用if语句编写的代码.

我想知道是否有我没有考虑到的东西,或者是否有反对在trivial个 case 中使用它的论点.

推荐答案

短路求值是取代看起来微不足道的IF语句的好做法吗?

  • doStuff();返回void时,不是一个选项.

  • 强制doStuff();现在和将来返回值.

当存在竞争选项时,应编写维护和清晰度代码.

获胜者:

if (my_flag) {
  doStuff();
}

如果if语句很短,可以 Select 省略大括号

if (my_flag)
  doStuff();

C++相关问答推荐

问关于C中的指针和数组

sizeof结果是否依赖于字符串的声明?

getchar读css + z还是返回css?

在C语言中使用scanf()时我无法理解的警告

自定义应用程序上的日志(log)轮换问题

增加getaddrinfo返回的IP地址数量

核心转储文件中出现奇怪的大小变化

当我运行/调试C程序时,Malloc()似乎正在将&q;r\r...&q;赋值给一个指针,我不确定为什么?

用C宏替换strncMP函数中的参数

二进制计算器与gmp

在C++中通过空指针隐式访问常量变量的值

进程在写入管道时挂起

CGO:如何防止在使用CGO在包中包含C头文件时出现多个定义...&q;错误?

如何在GET_STRING输入后对少数几个特定字符串进行C判断?

C:在编译时构建和使用字符串文字的预处理器宏?

如何在C-函数中混合使用C代码和ASM?

Fscanf打印除退出C代码为1的程序外的所有内容

带有数组指针的 struct 在print_stack()函数中打印随机数

如何在Rust中处理C的longjmp情况?

为什么实现文件中的自由函数默认没有内部链接?