0

少なくともここ StackOverflow では、ハンガリー語表記が悪いと見なされることが最も多いようです(ただし、少数派はまだ支持しています)。

ここ数か月間、私がほとんどのコーディングを行ってきた JavaScript の世界では、本質的に非常によく似た命名規則が採用されているようですが、UpperCamelCaseオブジェクト コンストラクターに名前を付けるという、それに反対する人は見たことがありません。 vslowerCamelCase他のすべてに名前を付けます。

したがって、違いは表面にあるように見えます。

  • ハンガリー語表記ではプレフィックスが使用されますが、JavaScript では大文字と小文字が使用されます。
  • ハンガリー語表記は多くのことを区別できますが、JavaScript は「オブジェクト コンストラクタ」と「非オブジェクト コンストラクタ」しか区別できません。

「システム ハンガリー語」は「アプリケーション ハンガリー語」とは異なると言う人もいます。前者はタイプを示し、後者はタイプがカバーしないものを示します。この場合、通常、「システム ハンガリー語」はまだ悪いと見なされますが、「アプリケーション ハンガリー語」は良いと見なされる場合があります。

JavaScript のキャメル ケーシング規則はシステム ハンガリー語に似ているため、その点では何のメリットもありません。

ハンガリー語表記法に反対する人々の主張は、JavaScript オブジェクト コンストラクターにも当てはまるようです。

  • とにかくコンパイラは型を知っています。
  • これに関しては、IDE の方がはるかに優れています。
  • 型が変わると脆すぎる。
  • コードが乱雑になると、コードが読みにくくなります。

では、より一般的なハンガリー語の表記法では問題がない場所を問題なく使用できるようにする、この JavaScript 規則の違いは何でしょうか?

優れた JavaScript IDE が不足しているのでしょうか? 使用範囲が限られているため、それほど悪くはありませんか? それは、動的言語が実際には型の方法をあまり持っていないためですか? 使いすぎないから問題ないのでは?

(これが SO ではなく、programmers.SE に属している場合は、移行してください。)

4

1 に答える 1

2

結局のところ、「ハンガリーのアプリケーション」に似ています。

Javascript は、関数がコンストラクターか単純な関数かを認識していません。また、コンストラクターを単純な関数であるかのように呼び出すと、非常に奇妙な望ましくない結果が生じる可能性があります (ES5 の厳密モードを使用している場合を除く)。

そこでもIDEがどのように役立つかわかりません。IDE ができる唯一のことは、最初にハンガリー語表記を使用することを意味するvar x = new plainFunction();andの呼び出しを防止することです。var y = Constructor();

表記法を使用するとコードが読みにくくなる方法もわかりません。

于 2012-08-29T10:14:55.067 に答える