web-dev-qa-db-ja.com

一人のプログラマー、多くの言語-名前のジレンマ

複数のプログラミング言語で作業する場合、遭遇する問題があります...

ある言語で有効な名前(識別子)は別の言語では無効ですたとえば...

varnewfunctionthisはJavaScriptのキーワードですが、Pythonでは自由に使用できます。同様に、listdictdefはJavaScriptで問題なく使用できます。

これは非常に一般的であり、プログラマーが複数の言語でプログラミングする場合、プログラマーは一般にすぐに慣れるでしょう。

ただし、共同で作業しているときは、コードの一貫性と均一性を確保するために、チームメンバーが使用するいくつかのルール/ガイドラインをレイアウトする必要があります。チームの場合、この問題は、プログラム中に何が有効で何がそうでないかを単に覚えておくことよりも重要になります。

だから、私の質問は、あなたが採用する戦略は...

  • 使用するすべての言語に存在するすべての予約語の和集合を取り、全員にリストを渡して、その使用を控えますか?
  • 多様性を受け入れ、「コンテキストスイッチング」時に余分な労力を費やす
  • ある言語が他の言語を使用できるが、その逆はできないという中間的な根拠を採用する

(注:この質問では、PythonとJavaScriptについてのみ話します...しかし、質問に対してより広範に回答してください)

-更新-

すべての回答をありがとう。したがって、私が明らかにしている一般的なコンセンサスは、プログラマーが他の言語で何をしているかに関係なく任意の名前を使用できるようにすることです-名前が説明的なものである限り、害はありません。

14
treecoder

私の30年以上の経験でかなりの数の言語でプログラミングしてきたので、どの言語でも機能する命名基準を見つけようとするのは、たぶん空想のパイだと思います。

私の経験の早い段階で、Cで#defineマクロを使用して、Cコードをそれまで使用していたPascalコードのように見えるものを作成しようとしました。私はPascalでのプログラミングに慣れているので、CをPascalのように機能させるだけで生産性が向上すると考えました。私はすぐに自分が間違っていることを発見しました。

私をより生産的にしたのは、Cを学び、Pascal構文を他の言語に活用しようとしないことでした。

あなたが使用している別の言語でそれをするのは間違っているという理由だけで、ある言語で何かをするのを防ぐことによってプログラマーを潜在的に制約するでしょう。

命名規則を、変数の使用を説明するのに意味のあるものに限定すると、おそらく、どの言語でも優れたコードが作成されます。

46
Zeke Hansell

どの言語でも十分に説明的ではないため、最初に「リスト」、「新規」、「var」、「これ」などの名前を付けないでください。

24
CaffGeek

たとえば、javascriptからpythonへの切り替えは、すでにコンテキストスイッチです。変数名がシフトしても、特に名前の変更が言語で慣用的である場合は問題ありません。この場合、「おい、あなたはjavascriptではなくpython now。

11
Wyatt Barnett

説明的な変数の名前を使用している場合、説明する問題は最小限に抑える必要があると思います。そうは言っても、それが最小限であれば、言語間の変数の命名によって引き起こされるコンテキストのシフトを受け入れることも最小限になります。

7
Stephen

これがactualであり、仮説的な問題ではないことがわかるまで、ガイドラインを書くことに時間を費やすべきではありません。

これが問題になる可能性があると考えることができる1つの状況は、プログラミング言語間でデータ構造を共有する場合です。たとえば、クライアント側にJavascriptオブジェクトがあり、それがサーバー側のPythonオブジェクトに反映されている)で、当然のことながら、それらのメンバーに同じ名前を付けたいとします。ルールが単純な場合:どの言語でも予約語である名前を使用しないでくださいそれだけです。必要に応じて、ガイドラインにそれを書き込んでください。次に、より重要なタスクに進みます。

ところで、リストも辞書もPythonでは予約語ではありません。かなりお粗末なものですが、変数名として使用できます。

5
Martin Vilcans

ほとんどの予約語(どの言語でも)はかなり一般的です。私はよりわかりやすい変数/関数名を好みます。つまり、この問題に遭遇することはほとんどありません。 Charles Simonyiの元の命名規則に感染したことを認めなければなりません。これは70年代後半のXeroxで、ハンガリーの表記法と呼ばれる前でさえありました。これは、名前が正気ではないという意味でもある傾向があります予約語として使用します。

5
Peter Rowell

私の経験では、これに対する修正は、すべての言語に適用される幅広い命名規則を持つことです。 JavaScript、C#、またはその他のファンキーな言語のいずれであっても、変数とクラスの命名方法はコードベース内の標準になる可能性があり、これが私がこの問題を解決するための一般的な方法です。規約は全員のコンセンサスで合意することができ、単に大多数がガイドライン、「これが私たちがそれを行う方法です」と言っている経営陣、または私が想像するいくつかの他の可能性を望んでいます。

ほとんどの場合、クラスまたは変数の名前は、それほど簡単に競合しないように説明されているため、あなたが説明する識別子の問題はめったにありません。同時に、チームがどのようにこれを処理したいかを明確にするよりも、他の人と協力している場合は、重要なポイントです。

3
JB King

コードをある言語から別の言語に移動することを計画していない限り、これがどのように問題になるかはわかりません。有効な変数名を個人的に忘れがちな場合は、有効であると個人的に確信がない限り、変数名を使用しないでください。しかし、他の人が無効な変数名を使用すると、そのコードはコンパイルまたは実行されません。したがって、誰か他の人のコードに取り組んでいて、彼らが何か 'var'を呼び出した場合、それが彼らが使用している言語で有効な名前であることはかなり確実です。

ある言語から別の言語にコードを移動する予定がある場合は、禁止されている名前のリストが必要になることがあります。たとえば、私のCコーディングプラクティスドキュメントでは、変数としてnewまたはclassを使用することを禁止しています。これにより、コードをC++に移植することが難しくなります。その場合、必要に応じて、その作業を容易にするルールを設定するのが妥当です。

2
David Schwartz