28

これは、 acts_as_conferenceでBigNerdRanchのCharlesBrianQuinnが行ったプレゼンテーションで最初に議論されたものでした。彼は、プログラミングとRailsの両方に不慣れな多くの人々に、Ruby onRailsBootcampを指導することから学んだことについて話し合っていました。

目立った特定のスライドの1つは、誰かにプログラミングを教えようとしたときに、例としてfooとbarを使用しないという方針に沿ったものでした。彼の推論は非常に単純でした。

どちらがわかりやすいですか?

baz = foo + bar

また

answer = first_number + second_number

何かを説明するときに何度も起こり、すぐにfooバーのプレースホルダーにジャンプしますが、実際のシナリオを使用して、自分の間違いに気づき、例をよりわかりやすくします。

これは、プログラミングの経験がなく、実際に教えようとしていることを説明する前にfooとbarを説明する必要がある人に教えようとする場合に特に当てはまります。

ただし、経験豊富なプログラマーにfooとbarを使用することは問題ないようですが、個人的には、Charlesと一緒に、これを変更する必要があると思います。

「foo」をすばやくSO検索すると、20ページを超える結果が返され、fooは私が理解できるより多くの方法で使用されています。また、特定の言語に関する質問を読んでいて、その言語をよりよく理解するために読んでいる場合もあります。fooとbarの代わりに該当する変数名を使用すると、問題の理解と解釈がはるかに簡単になります。したがって、経験豊富な開発者にとっては、構造にも少し欠陥があるように思われます。

これは、これまでに蹴られる可能性のある習慣ですか?なぜあなたはfoobarを選ぶのですか、それともfoobarを選ばないのですか?

4

10 に答える 10

40

それはあなたが何を教えようとしているのかに厳密に依存します。プログラミングの例を示すとき、スニペットを「完全」にするためだけにいくつかのことを宣言する必要があり、それらのいくつかはあなたが示しているものの核心ではありません。

たとえば、例外をスローする方法を示したい場合は、次のようなスニペットを表示しても問題ないと思います。

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);
   }

}

それはあなたが教えようとしていることを曖昧にしているからです。

于 2008-10-24T17:38:11.307 に答える
16

プログラマー以外の人と話すときのポイントはわかりますが、ホワイトボードでチームメンバーと問題について話し合っているときは..私のfooと私のバーが恋しいです。foo / barの普及は、ほとんどのプログラマーが抽象的に考える能力の例だと思います。

あなたがトレーニングの分野にいるなら、おそらくもっと問題です。

于 2008-10-24T17:36:24.150 に答える
7

私は時々それらを使用します。ただし、「実際の」名前が関係しない場合に限ります。

于 2008-10-24T17:37:33.290 に答える
3

「sizeof(foo) でオブジェクトのサイズを取得できる」のように、「foo」と「bar」の任意の値で十分であることを示すときに、これらを使用します。詳細だけでなく、一般的な概念を人々に理解してもらうのに便利です。たとえば、「sizeof(int) のようなものでオブジェクトのサイズを取得できる」と言った場合、誰かが float でも機能するかどうかを尋ねることはほぼ確実です。

于 2008-10-24T17:43:36.773 に答える
1

私は、聴衆が目前の概念に十分に精通していて、それが彼らの理解に悪影響を与えることを証明するときはいつでも、fooやbarをしないことを選択します。

Foo and Barを使用する必要があるのは、コンテキストを追加するために追加の議論が必要になるほど抽象的なものについて話しているときだけです。その場合、FooとBarは、x、y、zなどの代替コードよりもはるかに読みやすく、作成されたコードです。

于 2008-10-24T17:38:57.140 に答える
1

それは、多くのプログラマーの軽度の、またはそれほど軽度ではない皮肉な性質によるものだと思います。多くの人が foo/bar にさまざまな意味を付けようとしましたが、ほとんど、または少なくとも多くの人が「FUBAR」を考えています。「経験豊富な」人々が他の人について中傷的なコメントをする方法です。

このため、私は非プログラマーには決して使用せず、経験豊富なプログラマーでもめったに使用しません。私が使用する場合、私は目前の主題についてベールに包まれた言及をしていることに賭けることができます.

于 2009-01-06T21:34:57.707 に答える
1

foo と bar のような無意味な言葉を避けることに加えて、同じ関係を持つ実際のシナリオのコード例を提供することがはるかに重要であることがわかりました。これは、学習者がトピックを正しく理解するのに本当に役立ち、誤解を防ぎます。たとえば、私が依存性注入について教えていて、Car クラスのインスタンスが Driver クラスに注入されるサンプル コードを示している場合、誰も混乱して「それでは、Car が Driver を制御するということですか?」と考えることはありません。

于 2009-01-06T21:46:43.267 に答える
1

foo例でandを使用するもう 1 つの重要な理由があると思いますbar。これらの名前は、魔法のキーワードを呼び出していないことを明確にします。ドキュメントやコード例を読むときはいつでも、例の任意の部分と必要な部分を明確に区別するのが好きです。

コード例で意味のない単語を一般的に表すものに置き換えると、説明しようとしているキーワード、クラス、またはメソッドによく似た名前になる可能性があります。, のような "my" 接頭辞は、myNumber名前myFunctionを恣意的なものとして目立たせるための適切な妥協案です。

于 2012-06-17T10:49:09.143 に答える
0

私はプログラミングが初めてで、多かれ少なかれ独学です。私はオンラインで多くのサンプル コードを読み、最初は foo と bar &c を置き換えていることに気付きました。上記の firstnumber と secondnumber の例のように、より関連性の高い名前を付けてください。

私は今、x、y、z、i を好みます... foo と bar は私の心に言語的衝動を引き起こし、ルーチンから私をそらすことができるようです。頭の中で変数を調べて、それらが何であるかを覚えておいてください。しかし、他の人に教えるとき、特にプログラムはしないがプログラムの仕組みを理解する必要がある人にコードを説明するときは、関連する名前を使用することをお勧めします。

于 2009-01-06T21:25:37.350 に答える