モデルまたは変数を作成するときに使用してはならない Web 上のアイテムのリストはありますか?
たとえば、アパートのリストを作成したい場合、モデルに のような名前を付けることは、組み込みの Python 関数であるProperty
ため、将来問題になり、混乱を招きます。property
私はこれをグーグルで試しましたが、何も思いつきませんでした。
ありがとう!
モデルまたは変数を作成するときに使用してはならない Web 上のアイテムのリストはありますか?
たとえば、アパートのリストを作成したい場合、モデルに のような名前を付けることは、組み込みの Python 関数であるProperty
ため、将来問題になり、混乱を招きます。property
私はこれをグーグルで試しましたが、何も思いつきませんでした。
ありがとう!
命名に関する規則と制約は、プログラミング言語によって異なります。識別子/名前がどのようにバインドされるかは、言語のセマンティクスとそのスコープ規則によって異なります。識別子/名前は、スコープに応じて異なる要素にバインドされます。スコープは通常字句的 (すなわち静的) ですが、一部の言語では動的スコープ (Lisp の変形) があります。
名前が異なっていても、スコープに混乱はありません。識別子/名前がスコープ全体で再利用される場合、識別子/名前は別のものをマスクする可能性があります。これは、シャドウイングと呼ばれます。これは混乱の元です。
特定の予約名 (つまり、キーワード) には特別な意味があります。そのようなキーワードは、単に他の要素の名前として禁止することも禁止することもできます。
たとえば、in Smallatalkself
はキーワードです。ただし、一時変数を宣言することは引き続き可能self
です。一時変数が表示されるスコープではself
、メッセージの受信者である通常の自己ではなく、一時変数に解決されます。
もちろん、通常の名前の間でシャドウイングが発生する可能性があります。
スコープ ルールでは型も考慮され、継承によってシャドウが導入される可能性があります。
バインディングに関連するもう 1 つの混乱の原因は、メソッドのオーバーロードです。静的に型付けされた言語では、どのメソッドが実行されるかは、呼び出しサイトの静的型によって異なります。場合によっては、オーバーロードによって、どのメソッドが選択されているかわかりにくくなります。混乱を避けるために、シャドウイングとオーバーロードの両方を避ける必要があります。
Python を Javascript に、またはその逆に翻訳することが目標である場合は、両方の言語のスコープ規則とキーワードをチェックして、翻訳が構文的に正しいだけでなく、意味的にも正しいことを確認する必要があると思います。
一般に、プログラミング言語には「予約語」または「キーワード」があり、これらは使用できないか、場合によっては使用しないでください。Python の場合、そのリストはここにあります。
ほとんどの自然言語のほとんどの単語は、文脈に応じて異なる意味を持つことができます。そのため、単語の意味を明確にするために指定子を使用します。いずれにせよ、特定の識別子が紛らわしいと思われる場合は、明確にするために指定子を追加するだけです。たとえば、不動産を扱うObjectProperty
アプリケーションであっても、不動産とはおそらく関係ありません。
あなたが提示するケースは、コンテキストが添付されていない一般的な識別子を使用する場合と同じです。たとえば、limit
orという名前の変数length
は、異なるプログラムではまったく異なる意味を持つ場合があります。意味のある識別子を使用し、その意味を広く文書化してください。独自のコード ベース内で一貫性を保つことも望ましいでしょう。完全にはならず、プログラミングをより難しくするだけの禁止用語リストで生活を複雑にしないでください。
明らかな例外は、選択したプログラミング言語によって予約されている単語です-しかし、いずれにしても、まともなコンパイラではそれらを使用できません...