去 foo bar,还是不去 foo bar:这就是问题

2024-01-01

这最初是在 Charles Brian Quinn 的演讲中讨论的。大书呆子牧场 http://www.bignerdranch.com/ at 作为会议行为 http://www.actsasconference.com。他正在讨论他从向许多编程新手和 Rails 新手指导 Ruby on Rails 训练营中学到的东西。

一张特别引人注目的幻灯片是这样的在尝试教某人编程时,切勿使用 foo 和 bar 作为示例。他的理由很简单。

哪个更容易理解?

baz = foo + bar

or

answer = first_number + second_number

在解释某些事情时,我自己就发生过很多次,我立即跳到 go to foo bar 占位符,但随后意识到我的错误,并通过使用现实世界的场景使示例变得更有意义。

当试图教没有接触过编程的人并且您最终需要在解释您实际要教的内容之前解释 foo 和 bar 时,这尤其适用。

然而,对于经验丰富的程序员来说,使用 foo 和 bar 似乎没问题,尽管我个人和 Charles 都认为这是需要改变的。

快速搜索“foo”会返回 20 多页的结果,其中 foo 的使用方式我可以理解。在某些情况下,我正在阅读有关特定语言的问题,这样做是为了帮助更好地理解该语言。如果使用适用的变量名而不是 foo 和 bar,则可以更容易地理解和解释问题。因此,对于经验丰富的开发人员来说,这种结构似乎也有点缺陷。

这是一个永远可以改掉的习惯吗?为什么选择 foo bar 或不选择 foo bar?


这完全取决于你想教什么。有时,在显示编程示例时,您必须声明一些内容才能使代码片段“完整”,而这些内容并不是您所显示内容的核心。

例如,如果您想展示如何引发异常,我相信提供如下代码片段就可以了

public void foo() { 

   // Do some things

   if (errorCondition) {
      throw new Exception("Error message");
   }

}

由于其中的重点是显示异常,因此没有必要关心方法名称,因此 foo 在这种情况下是“合法的”,或者至少对我来说是“合法的”。

我不接受的(在同一个例子中)是

public void foo() { 

   // Do some things

   if (bar) {
      throw new Exception(baz);
   }

}

因为它模糊了你想要教的内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

去 foo bar,还是不去 foo bar:这就是问题 的相关文章

  • javascript - 动态变量

    您好 我正在尝试创建动态变量 但它说 变量 v0 到 v5 未定义 td each function i eval var v i this html 任何帮助将不胜感激 这听起来是个坏主意 你有什么理由不能这样做吗 var tdHtml
  • django如何将字符串转换为模块?

    我试图了解 django 的另一个神奇之处 它可以将字符串转换为模块 In settings py INSTALLED APPS声明如下 INSTALLED APPS django contrib auth django contrib c
  • 命名 kafka 主题的最佳实践是什么?

    我们是 kafka 的新手 我们有几个团队正在开发一些相互发布 订阅事件的应用程序 由于kafka主题名称将在团队之间共享 那么命名有什么最佳实践吗 基本上我们不希望看到 A 团队命名主题companyname appname events
  • 检查多个变量java中的替换空值

    我试图找到一种简单的方法来在 Java 中的多个变量中执行多个 null 检查 替换 我有一个包含大约 20 个字符串变量的对象 在构造函数中 我想检查是否有任何变量值为空 如果它们为空 我想用空字符串替换它们 我可以执行一系列 if 语句
  • 创建具有动态更新变量的数组

    我有一些 PHP 变量 它们的名称直接链接到它们包含的函数 是否有办法自动创建这些变量 以便我可以使用所有变量 00 200 这就是我现在正在做的事情 regdays00 is user reg matured 00 regdays02 i
  • 在 Swift 中将动态 Int 变量从一个类传递到另一个类

    我是 swift 2 的新手 我陷入了将变量从一个类传递到另一个类的过程中 我有一个类 GameScene 我有一个公共变量score并且在更新功能中不断更新 我想发送score两个节点相互碰撞时的值 一旦它发生碰撞 我就会使用 mainv
  • C 类型命名约定,_t 或 ALLCAPS

    我一直想知道是否有任何命名约定 例如何时对类型使用全部大写以及何时追加 t 什么时候不使用任何东西 我知道当时 K R 发布了各种有关如何使用 C 的文档 但我找不到任何相关内容 在 C 标准库类型中 t看起来漂亮占主导地位 time t
  • Objective-C 中是否有命名初始化方法的约定?

    在可以通过不同的 init 方法初始化的 Objective C 类中 将所有初始化程序共用的初始化代码收集到一个从其他 init 方法 有时也从从 Nib 唤醒 是否有关于如何命名该方法的约定 初始化器 初始化公共 根据 Apple 的说
  • 长多字节 NOP:通常理解的宏或其他符号

    x86 和 x86 64 处理器不仅具有单字节 这不是什么大秘密NOP指令 还包括各种类型的多字节类 NOP 指令 这些是我设法找到的 AMD 推荐 参考 AMD 系列 15h 处理器的 AMD 软件优化指南 文档 47414 http s
  • 您在 Java 项目中使用什么策略进行包命名?为什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我不久前就想过这个问题 最近当我的商店正在开发第一个真正的 Java Web 应用程序时 这个问题又重新出现了 作为介绍 我看到两个主要的包命名
  • C++ getter 和 setter 最佳风格

    Java 代码约定简单明了 采用这种风格 public int GetMyAge return myAge void SetMyAge int myAge this gt myAge myAge private int myAge 我知道这
  • 如何将变量插入 PHP 数组?

    我在网上查了一些答案 但都不是很准确 我希望能够做到这一点 id result id info array id Example echo info 0 这有可能吗 您需要的是 不推荐 info array id Example varia
  • \add_34/U1_1_6 的 Verilog 命名约定

    有人可以解释一下这个命名约定在下面的 Verilog 行中意味着什么吗 我不知道这是什么 add 34 部分的意思是 ADDHXL add 34 U1 1 6 A n1022 B add 34 carry 6 CO add 34 carry
  • 将 char 绑定到枚举类型

    我有一段与此非常相似的代码 class someclass public enum Section START MID END vector section Full void ex for int i 0 i section
  • PowerShell 参数 - “术语‘param’未被识别为 cmdlet 的名称”

    考虑 notepad Starts Notepad Get Process notepad Finds the processes named notepad param Parameter Mandatory true string Pr
  • C++警告:局部变量的地址

    Merged https meta stackexchange com questions 158066 what is a merged question with 局部变量的内存可以在其作用域之外访问吗 questions 644121
  • 用 Java 编写“漂亮”代码的标准? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在 C# 中,为什么我在声明 int 变量时看到它存储了一个零,但仍然收到错误消息说我应该初始化它?

    在 C 中 如果我这样做 int x 然后按 F10 我看到 x 中存储了一个零 但是当我尝试使用 x 时 它告诉我应该初始化它 这是为什么 那里应该有一个零 对吧 对于数组也是如此 所以 int a new int 5 如果我们按 F10
  • 在 C++ 中检查空指针的首选方法是什么?

    选项A if NULL pSomethingColumn Yes we use Yoda conditions if NULL pSomethingColumn Or if pSomethingColumn if pSomethingCol
  • 嵌套 .ajax() 调用的 JavaScript/jQuery 变量作用域问题

    我很难传递变量postData这是一个嵌套子级的序列化 jQuery 数组对象 ajax call postData成功传递给第一个 ajax 打电话 但是当我尝试在第二次使用它时 ajax 调用时 它不会发布任何表单元素 因为变量在该级别

随机推荐