博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
尤达表达式
阅读量:4943 次
发布时间:2019-06-11

本文共 974 字,大约阅读时间需要 3 分钟。

尤达表达式是什么?

  尤达表达式是计算机编程中的一种风格,其中表达式的两个部分与条件语句中的典型顺序相反。

  这种风格的命名,来源于星球大战的一个角色,绝地大师尤达(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 */ }

缺点

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

总结

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

怎么规避尤达表达式

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

转载于:https://www.cnblogs.com/walls/p/9014692.html

你可能感兴趣的文章
英语各种时态例句
查看>>
从下往上看--新皮层资料的读后感 第三部分 70年前的逆向推演- 从NN到ANN
查看>>
(转)系统引导管理器GRUB详解
查看>>
数据访问C#入门经典第21章-读写压缩数据
查看>>
PHP超时处理全面总结(转)
查看>>
利用python进行数据分析--pandas入门2
查看>>
[zz]使用 libevent 和 libev 提高网络应用性能
查看>>
Linux故障处理最佳实践
查看>>
6标准文件读写
查看>>
jsTree 核心功能(core functionality) API
查看>>
Perl oop链接数据库
查看>>
网络虚拟化我眼中的OpenFlow
查看>>
[leetcode] 3. Longest Substring Without Repeating Characters
查看>>
06 Frequently Asked Questions (FAQ) 常见问题解答 (常见问题)
查看>>
获取判断IE版本 TypeError: Cannot read property 'msie' of undefined
查看>>
tcpreplay安装使用
查看>>
自增锁
查看>>
ps命令学习
查看>>
关于proteus仿真的串口问题
查看>>
[NOI2018] 归程 可持久化并查集
查看>>