1

私はjsでカスタムUIビルダーを書いています。ファクトリの実装を使用して要素を構築します。どの関数がライブラリの一部であるのか、どの関数が単純な古いjavascriptの一部であるのかを明確にするために、の命名規則を使用しましたfunction _FunctionName()。しかし、いつもやっているのは面倒だと思いますFactory._FunctionName()

命名規則(function FunctionName())を削除するか、それともそのままにする必要がありますか?

このようなライブラリの作成に関して、命名規則の一般的な/ベストプラクティスはありますか?

編集:

var __PanelFactory = function () {
 //"private"
 var Panels = [];
 //exposed
 function _GetPanel(id) {
  //etc
 }
 return {
    _GetPanel: _GetPanel,
 };
};

var Factory = new __PanelFactory();
Factory. //this will show certain plain javascript functions 
         //like toString, constructor, hasOwnProperty, isPrototypeOf, etc...

//note that even jQuery can have the previous list used with something like
$(selector).

//So to differentiate I made sure my functions start with _
Factory._GetPanel(1);

//Should I just make it easy on myself and allow
Factory.GetPanel(1);

//Or is there value in leaving the naming convention in?
4

2 に答える 2

4

javascriptのかなり一般的な規則を次に示します。

定数

通常、ALL_CAPS_WITH_UNDERSCORESにあります

var MAX_COUNT = 100;
var BASE_URL = "http://example.com/api/";

変数

通常、lowerCamelCaseで

var currentCount = 0;
var userName = "timrwood";

コンストラクター

通常、UpperCamelCaseで

function Factory(){}
var factory = new Factory();

メソッド

通常、lowerCamelCaseで

Factory.prototype.getPanel = function(){};
var factory = new Factory();
var panel = factory.getPanel();

プライベート変数/メソッド

通常は_lowerCamelCaseWithAUnderscorePrefixにあります。

Factory.prototype._fetchPanel = function(){};
Factory.prototype.getPanel = function() {
    return this._fetchPanel();
}
于 2012-05-22T00:50:20.983 に答える
1

すでにSOに質問があり、Javscriptのコーディング規則(命名を含む)に関する優れたドキュメントにリンクしています。

あなたが尋ねた重要なビット:

  • 名前空間を使用します(inital-caps名を使用)。

PanelFactoryプレーンなJavascriptと衝突しないため、これはややオプションです。ただし、サードパーティが使用するパブリックAPIを作成している場合は、他のライブラリと衝突する可能性があります。

var MyApp = MyApp || {};
MyApp.__PanelFactory = function () { // ...
  • _すべての関数名の前にある下線( )を削除します。

toStringJavaScriptをしばらく使用している人は、すべてのオブジェクト(など)に組み込まれているデフォルトのインスタンススコープ関数を知っているので、アンダースコアは必要ありません。

MyApp.PanelFactory = function () {
  // ...
  function GetPanel(id) {
    //etc
  }
  • オブジェクトコンストラクター関数に初期キャップ名で名前を付けますが、グローバル関数または名前空間スコープの関数とインスタンススコープの関数には初期小文字の名前を付けます。

これは単なる標準的な規則です。組み込み関数の区別には役立ちませんが、前の項目で述べたように、区別する必要はありません。

MyApp.PanelFactory = function () {
  // ...
  function getPanel(id) {
    //etc
  }
  • ローカル変数に最初の小文字の名前を付けます。

これは、名前空間、オブジェクトコンストラクター、およびオブジェクトのインスタンス(一般に「メソッド」と呼ばれるカスタムインスタンススコープの関数が存在すると予想される場所)の違いを理解するのに役立ちます。

var factory = new MyApp.PanelFactory();
var panel = factory.getPanel();
于 2012-05-22T00:52:54.523 に答える