2

ほとんどのIDEがより多くのソースコードファイルとプロジェクトにまたがる複雑なリファクタリングをサポートしているJavaから来て、同じことをサポートするJavascriptエディタがあるのだろうか?

Cloud9 の AST ツール サポートに関するプレゼンテーションを見終わったところです。このプレゼンテーションは 1 年以上前のものです。それ以来、Cloud9 は複雑なリファクタリング関数を理解できるようになったのでしょうか。NodeJs require() ステートメント? もちろん、この質問は Cloud9 に限定したくありません。brackets.io、Orion などがあります。これは私が出会ったプレゼンテーションにすぎないため、Cloud9 に基づいた例を示しています。

オブジェクト プロトタイプをエクスポートする Node モジュールがあり、これを使用する別のモジュールがあるとします。エクスポートされたプロトタイプの関数の名前を変更したいとします。私が探しているのは、変更に応じて IDE が他のモジュールの呼び出しをリファクタリングすることです。モジュールの依存関係全体でリファクタリングの名前変更をサポートするツールはありますか?

4

2 に答える 2

2

その解決策を見つけるのに多くの時間を無駄にしますが...

あなたが望むようなアプリケーションは存在しないと思います。JavaScript は、そのための少し変わった言語です。たとえば、スコーピング。現在の変数が他の変数のインスタンス/クローンであるかどうかを検出するのが難しいため、関数呼び出しを検出するのは難しく、プロトタイプの変更を検出するのは困難です。「クラス」があり、新しいインスタンスを作成すると、この新しいインスタンスのみのプロパティを変更できます。もちろん、「this」キーワードは、スコープに関する新しい問題になる可能性があります。

例。addNew関数の名前を変更すると、何の名前も変更されますか?

var Sample = function() {
    this.values = [];
};
Sample.prototype.addNew = function(value) {
    this.values.push(value);
};

var s = new Sample();
s.addNew("1");

var s2 = new Sample();
s2.addNew = function(value) {
    this.values.push(parseInt(value, 10));
};
s2.addNew("12x");

Sample.prototype.addNewRaw = Sample.prototype.addNew;
Sample.prototype.addNew = function(value) {
    this.values.push("x" + value);
};

var s3 = new Sample();
s3.addNew(12);
s3.addNewRaw(12);

console.log(s);
console.log(s2);
console.log(s3);

わかりました、ひどいコードです :) 同僚がこのコードに出会ったとしたら、彼がこのコードのように見えるまで叩くだけだと思います。はい、興味深いトピック/質問であり、「それは可能であり、使用できるでしょうか?」質問は、私たちが尋ねる必要がある最初のものです。もちろん可能であり、それは使用可能です。

ところで、私は一般的にブラケット、sed、grep、jshint を使用し、リファクタリングも使用します。

于 2014-01-04T20:40:06.697 に答える
1

当社では、Webstorm を使用して nodejs プロジェクトのリファクタリングを行っています。Webstorm は nodejs IMHO に最適な IDE です。

その理由は、Lint や他の多くのモジュールを使用してコード分析を実行できるからです。コード分​​析の後、多くのコーディングミスを解決し、多くの不正行為を減らすことができました.

ファイル名またはメソッド名を変更すると、プロジェクト全体のスキャンが呼び出され、自動的に修正される参照の数が表示されます。

Webstorm は、コード間のクイック ジャンプや便利なキーボード ショートカットなど、多くの Vim 機能もサポートしています。実際、私は自分の壁に Webstorm のショートカット チートシートを貼り付けました。

ここにWebstormへのリンクがあります

于 2014-01-04T20:41:15.590 に答える