function A(){};

A.prototype.a = function() {
  // 他のなんらかの処理

  // A.prototype._bの呼び出し
  this._b();
};

A.prototype._b = function() {};

A.prototype._bA.prototype.a でのみ利用され、 Node や Browserify で require('A') として扱うモジュールを想定しています。( module.exports は省略します)

この場合 A.prototype._b はどう書くのが望ましいといえるでしょうか。

上記のコードは個人的には違和感があり、

  • パブリックであること
  • 1度しか呼び出さないのにも関わらずメソッドであること

などが挙げられます。それらを解決するとなれば、

ex1: プライベートで、関数にした場合

function A(){};
var _b = function();

A.prototype.a = function() {
  _b();
};

のようなコードや、

ex2: ベタ書きで問題ないと判断した場合

function A(){};
// var _b = function();

A.prototype.a = function() {
  // _b()と同様の処理をここにベタ書き
};

といったコードが思い浮かびます。

しかし、

  • var _b = func~とするのは独立していて違和感がある
  • であれば A._b = func~ のような形はどうか
  • いずれも納得できないのであれば、「1回だけ呼び出すならなんでもかんでもベタ書き」ということでいいのか

このようにどうすべきなのか判断がつきません。

これでは自分の中で考えても仕方がないので、結局のところこのケースでは A.prototype._b はどう書くのがベストなのか教えていただけないでしょうか。

JavaScript なのでそこまでプライベートにこだわっているわけではなく、一般的な実装として望ましい形を知りたいと思っています。

よろしくお願いします。