前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >尤达表达式

尤达表达式

作者头像
我是leon
发布2019-08-28 12:00:38
发布2019-08-28 12:00:38
68700
代码可运行
举报
文章被收录于专栏:leon的专栏leon的专栏
运行总次数:0
代码可运行

尤达表达式是什么?

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

代码语言:javascript
代码运行次数:0
运行
复制
// 正常的写法
if(number == 7){/* code */}

// 尤达表达式
if(7 == number){/* code */}

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

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

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

优点

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

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

代码语言:javascript
代码运行次数:0
运行
复制
if (number = 7) { /* code */ }

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

代码语言:javascript
代码运行次数:0
运行
复制
if (7 = number) { /* code */ } // Uncaught ReferenceError: Invalid left-hand side in assignment
  • 解决不安全的null类型操作

  例如Java中的equals比较

代码语言:javascript
代码运行次数:0
运行
复制
String myString = null;
if (myString.equals("hehe")) { /* code */ } // This causes a NullPointerException in Java

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

代码语言:javascript
代码运行次数:0
运行
复制
String myString = null;
if ("hehe".equals(myString)) { /* code */ }

缺点

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

总结

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

怎么规避尤达表达式

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-04-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 尤达表达式是什么?
  • 为什么要避免使用尤达表达式
    • 优点
    • 缺点
    • 总结
  • 怎么规避尤达表达式
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档