• 尤达表达式


    尤达表达式是什么?

      尤达表达式是计算机编程中的一种风格,其中表达式的两个部分与条件语句中的典型顺序相反。
      这种风格的命名,来源于星球大战的一个角色,绝地大师尤达(Yoda)。剧中,该角色喜欢以颠倒的语序说英语。比如“当九百岁你活到,看起来很好你将不”
      下面举个栗子:

    // 正常的写法
    if(number == 7){/* code */}
    
    // 尤达表达式
    if(7 == number){/* code */}
    

      特点就是:将表达式的常量部分放在条件语句的左侧

    Yoda

    为什么要避免使用尤达表达式

      评判一个东西的好坏,通常都需要比较。那就先看看尤达表达式有什么优缺点

    优点

    • 捕捉编写程序意外引起的错误

      例如以下判断,由于判断相等少写了一个=号,导致程序运行中发生意外的赋值操作

    if (number = 7) { /* code */ }
    

      而使用尤达表达式,则可以在编译时捕捉到这个错误

    if (7 = number) { /* code */ } // Uncaught ReferenceError: Invalid left-hand side in assignment
    
    • 解决不安全的null类型操作

      例如Java中的equals比较

    String myString = null;
    if (myString.equals("hehe")) { /* code */ } // This causes a NullPointerException in Java
    

      尤达表达式的方式可以避开

    String myString = null;
    if ("hehe".equals(myString)) { /* code */ } 
    

    缺点

      与常规的编程直线思维相悖,造成代码阅读和理解上的不顺畅,缺乏可读性。

    总结

      尤达表达式的优点,其实可以通过其他方式去避免所犯的错误。例如第一个条件语句写成赋值语句,可以由代码检查工具检测出来。反而是可读性的缺陷,影响多人写作开发和维护。所以,要避免使用尤达表达式。

    怎么规避尤达表达式

      书写条件语句时,避免常量在前,变量在后去进行比较。应该按变量在前,常量在后的方式去书写。

  • 相关阅读:
    梯度下降(一)
    springcloud中的gateway中的配置访问方式
    hyper-v powershell 开通虚拟机,配置vlan,配置CPU,内存
    DOCKER 安装zabbix_proxy进行代理监控
    LINUX lvm扩容
    ipset 如何在 Linux 下大量屏蔽恶意 IP 地址
    变量、常量和注释
    pycharm使用和虚拟环境
    编程语言和python介绍及安装
    Spring详解(三)——认识IoC控制反转/DI依赖注入
  • 原文地址:https://www.cnblogs.com/walls/p/9014692.html
Copyright © 2020-2023  润新知