几个超炫的专业词汇

从同事的博客上学会了几个超炫的专业词汇,激动不已。觉得这些词汇可以言简意赅的概括我的好几篇博文,自己的文章水准真是自愧不如。现在来见识一下真正大师级的英语词汇:

  • Yoda Notation(Yoda 表示法)

    在 C/C++ 里面使用这样的表达式顺序:

    if ("blue" == theSky) ...
    

    这是为了避免意外的写成:

    if (theSky = "blue") ...
    

    “Yoda 表示法”的名字来源于《星球大战》的 Yoda 大师。他说话的单词顺序相当奇特,比如:“Backwards it is, yes!”

    同事认为:使用这个表示法是为了“变通”(wordaround) C/C++ 的一个设计抉择:使用 = 来表示赋值,而使用 == 来表示比较。这个设计充分的展现了“先辈的罪”(Sins of our Forefathers)这一词汇的精髓。

    关于 Yoda 表示法我有不同的见解,请参考《Yoda 表示法错在哪里》。

  • Mental Speedbump(头脑减速杠)

    由于设计的不协调性造成的用户的注意力分散。比如,很多软件喜欢弹出一个窗口问你“是否继续?”

  • Pearl Effect (珍珠效应)

    珍珠是怎么形成的?是由于异物掉进了蛤蚌的外套膜和贝壳之间的夹层里面,没法排出来。异物不断的刺激该处的外套膜,又痒又痛,于是外套膜分泌珍珠质把异物包围起来,包了一层又一层。久而久之,就形成了珍珠。

    在软件里面也有很多这样的“珍珠”。由于早期的挠人的设计错误,用户不得不采用一些“变通方案”(workaround)或者“附加过程”,这些就像珍珠质一样。久而久之,这些变通方案凝结起来,变成了“软件珍珠”,不了解它们来源的人都视之为宝贝。虽然产生于同样的原理,“软件珍珠”远远没有真正的珍珠那么好看。

    (请比较:Sins of our Forefathers)

  • Sins of our Forefathers(先辈的罪)

    当时看起来合乎逻辑并且合情合理最后回顾起来却很傻b的历史遗留设计。

    与“珍珠”相比,这些是有意识的加进去的,而不是不小心造成的,虽然这两者都会造成“变通”(workaround)。

  • Katrina Effect(卡特里娜飓风效应)

    这个词描述的是一种飓风过后完全重头来过的悲惨景象。这种现象现在经常出现在重装或者升级软件之后,或者 Windows 安装完软件之后要你重启机器(关掉所有窗口)。

  • Workaround(变通)

    因为开发过程的失败而让用户必须进行的一些操作。这些通常是设计失误。

  • Jenga Code

    当你加上一小块代码之后,就整个垮掉的那种代码。

    Jenga 是一种非常流行的 party 玩具,如图。它的工作原理是,先把那些小木条堆成一个规则的塔。然后,参加游戏的人轮流从下面抽出一块(只能用一只手)来放在最上面。谁放上之后木塔垮掉了,谁就“胜利”了。之后这个人就要做其他人想出来的一些“惩罚”,跟真心话大冒险那些事情差不多。

  • Higgs-Bugson

    一种假想中的 bug。它一般是跟据运行日志的少数记录和零星含糊的用户报告推测出来,但是在开发员的机器上很难重现。

  • Heisenbug

    当你试图观察它的时候就突然消失或者改变行为特征的 bug。

Yoda 表示法错在哪里

在上一篇博文里,我提到了 Yoda 表示法。

Yoda Notation(Yoda 表示法)

它的含义是,在 C/C++ 里面使用这样的表达式顺序:

if ("blue" == theSky) ...

这是为了避免意外的写成:

if (theSky = "blue") ...

“Yoda 表示法”的名字来源于《星球大战》的 Yoda 大师。他说话的单词顺序相当奇特,比如:“Backwards it is, yes!”

一般认为

使用这个表示法是为了“变通”(workaround) C/C++ 的一个设计抉择:使用 = 来表示赋值,而使用 == 来表示比较。这个设计充分的展现了“先辈的罪”(Sins of our Forefathers)这一词汇的精髓。

我认为

使用 = 来表示赋值其实并不是真正的错误所在。真正的错误在于 C/C++ 的赋值语句不应该返回一个值。

也就是说,theSky = "blue" 的所有功能应该只是“赋值”这种“副作用”,副作用不应该具有“值”。即使你牵强附会说它有一个值,它的“值”也应该是 void(随之这个 void 会被类型检查所拒绝,因为它不是 if 所期望的 bool)。所以,一个良好的语言不应该允许你把 theSky = "blue" 放进 if (...) 的“条件”里面。如果你真的要赋值又要判断,它会迫使你把这拆开成两行:

theSky = "blue";
if (theSky) ...

更近一步。if (theSky) 这个写法其实也是一个先辈的罪。theSky 的类型是 string,它不应该可以直接被作为 bool 使用。if (...) 的条件应该必须是一个 bool。 所以这里其实应该写成:

theSky = "blue";
if (theSky != NULL) ...

因为赋值语句永远不可能出现在条件的位置,所以之前的那种错误,即使我们使用 = 作为赋值操作符,也完全不可能出现。这样我们也就完全没必要用 Yoda 表示法了。

相反,如果我们只是把 = 换成像 Pascal 的 := 这样的赋值操作符,而保留其它的“特性”(赋值操作会返回值)的话,我们其实还是会遇到同样的问题:

if (theSky := "blue") ...

这里假设你想打 =,却不小心打成了 :=。机会虽然小,但是仍然有可能。而我推荐的解决方案,会让你故意想犯错误都不可能,编译器会拒绝接受你的程序。

所以你看到了,问题的根源其实不在于赋值操作的名字,而是有更深的原因。

转载于:https://www.cnblogs.com/alantu2018/p/8534100.html

【转】几个超炫的专业词汇相关推荐

  1. c++语言表白超炫图形_几个超炫的专业词汇

    来源:王垠的博客从同事的博客上学会了几个超炫的专业词汇,激动不已.觉得这些词汇可以言简意赅的概括我的好几篇博文,自己的文章水准真是自愧不如.现在来见识一下真正大师级的英语词汇: YodaNotatio ...

  2. ScrollReveal.js – 帮助你实现超炫的元素运动效果

    ScrollReveal.js 用于创建和管理元素进入可视区域时的动画效果,帮助你的网站增加吸引力.只需要给元素增加 data-scrollreveal 属性,当元素进入可视区域的时候会自动被触发设置 ...

  3. 计算机英语是不是复合词,计算机英语专业词汇的构成.ppt

    计算机英语专业词汇的构成 * 计算机英语专业词汇的构成 专业词汇的构成 派生词 (derivation) 复合词 (compounding) 混成词 (blending) 前缀 缩略词 (shorte ...

  4. Waves – 赞!超炫交互体验的点击动画效果

    Waves 点击效果的灵感来自于谷歌的材料设计,很容易使用.只需要引入 waves.min.css 和 waves.min.js 到 HTML 文件中可以使用了.采用 touchstart 与 tou ...

  5. 计算机的专业术语英汉,IT专业词汇中英对照

    IT是Information Technology英文的缩写,全称含义为"信息技术"涵盖的范围很广,主要包括:现代计算机.网络通讯等信息领域的技术.接下来小编为大家整理IT专业词汇 ...

  6. 编程人员不得不知的高频专业词汇***

    编程人员不得不知的高频专业词汇*** A2A integration A2A整合 abstract 抽象的 abstract base class (ABC)抽象基类 abstract class 抽 ...

  7. Canvas 示例:4种超炫的网站动画背景效果

    今天,我们想分享一些动画背景的灵感.全屏背景图片的网站头部是最新的网页设计趋势,已经持续了一段时间.最近人们一直在转向动画添加更多的视觉兴趣到他们的网站中,在这里我们想向您分享几个使用  JavaSc ...

  8. Planetary.js:帮助你构建超炫的互动球体效果

    Planetary.js 是一个 JavaScript 库,用于构建互动球体效果.它使用 D3 和 TopoJSON 解析和渲染地理数据.Planetary.js 采用了基于插件的架构,即使是默认的功 ...

  9. 一款基jquery超炫的动画导航菜单

    今天给大家分享一款基jquery超炫的动画导航菜单.这款导航菜单,初始时页面中间一个按钮,单击按钮,菜单从左侧飞入页中.再次单击按钮,导航飞入左侧消息.动画效果很非常炫.一起看下效果图: 在线预览   ...

最新文章

  1. [ZJOI2007]棋盘制作 报表统计 矩阵游戏 时态同步
  2. xUtils简介及其使用方法
  3. 十一、Android学习第十天——项目开始(转)
  4. QT的QDesignerMemberSheetExtension类的使用
  5. linux文件存储、inode、硬链接、软链接
  6. holer实现外网访问内网数据库
  7. JVM快速调优手册02:常见的垃圾收集器
  8. 《Python游戏趣味编程》新书上架了
  9. 数据交互什么意思_学习编程怎么样才可以不枯燥?什么是前端语言?
  10. UIImagePickerController---iOS-Apple苹果官方文档翻译
  11. linux中fb0和fb1同时显示数据,Linux frame buffer驱动设计与实现
  12. 以太网口差分电平_以太网差分信号线在两层PCB板上的布线方法
  13. 编程实现幂函数,(指数为整数)
  14. 如何开发Android手表界面ui,20款神奇的UI智能手表界面设计欣赏
  15. Lomo 照片特效 Lr 预设 Lomo Lightroom Presets
  16. 使用include-what-you-use优化编译速度
  17. 《惢客创业日记》2021.01.21(周四)什么是产品逻辑?
  18. Windows10打开“运行”窗口
  19. 作为前端,如何帮帝都的朋友租到合适的房子
  20. texlive写论文源代码_使用Latex写论文

热门文章

  1. 4月8日--关于Date的练习题--自定义获取当前时间
  2. MySQL性能调优与架构设计-架构篇
  3. Android 去除标题栏和状态栏的方法
  4. sscanf和sprintf的高级用法
  5. 一些不错的网站界面收藏
  6. tar安装卸载 mysql_Linux CentOS 6.5 卸载、tar安装MySQL的教程
  7. php 图片服务器搭建,php图像裁剪服务器搭建
  8. 快过年了,分享 25 个 JS 实用技巧送给大家吧
  9. 没经验能做软件测试吗?
  10. 在web开发中,为什么前端比后端更得到转行程序员的青睐?必看