72

名前を変更したいクラスがたくさんあります。それらのいくつかには小さな名前があり、その名前は他のクラス名で再利用されます。その名前を変更したくない場合です。このほとんどは Python コードにありますが、クラス名を参照する XML コードもいくつかあります。

単純な検索と置換では、これまでのところしか取得できません。私の場合、AdminAction を AdminActionPlug に、AdminActionLogger を AdminActionLoggerPlug に名前変更したいので、最初の検索と置換が 2 番目の検索と置換にも誤ってヒットします。

Python リファクタリング ツールの経験がある人はいますか? XML ドキュメント内のクラス名も修正できればボーナス ポイントです。

4

7 に答える 7

58

それまでの間、vim と何らかの形で統合されている 2 つのツールを試してみました。

1 つ目は、Vim (および emacs) プラグインに付属する Python リファクタリング ライブラリであるRopeです。いくつかの名前を変更してみましたが、間違いなく期待どおりに機能しました。リファクタリングを差分としてプレビューすることができました。これは素晴らしいことです。少しテキスト主導型ですが、それは私にとっては問題ありません。学習に時間がかかるだけです。

2つ目は自転車修理マンで、名前でポイントを獲得していると思います。vim と emacs にもプラグインします。まだあまり遊んでいませんが、ずっと前に試したことを覚えています。

両方ともまだ十分に遊んでいないか、より多くの種類のリファクタリングを試していませんが、それらをさらにハッキングします。

于 2008-08-27T09:15:42.863 に答える
5

WingIDE 4.0 (WingIDE は私が選んだ python IDE です) はいくつかのリファクタリングをサポートしますが、最新のベータ版である beta6 を試してみたところ... まだやるべきことが残っています。Retract Method はうまく機能しますが、Rename Symbol は機能しません。

更新: 4.0 リリースでは、すべてのリファクタリング ツールが修正されました。彼らは今素晴らしい仕事をしています。

于 2011-02-03T02:57:10.237 に答える
4

PyCharmにはいくつかのリファクタリング機能があります。

パイソンのリファクタリング

リネームリファクタリングにより、グローバル コードの変更を安全かつ即座に実行できます。ファイル内のローカル変更はインプレースで実行されます。リファクタリングは、プレーンな Python および Django プロジェクトで機能します。

Introduce Variable/Field/ConstantおよびInline Localを使用してメソッド内のコード構造を改善し、Extract Methodを使用して長いメソッドを分割し、Extract SuperclassPush UpPull DownおよびMoveを使用してメソッドとクラスを移動します。

于 2014-09-10T12:21:58.043 に答える
4

IDE はリファクタリングをサポートできます!! Eric、Eclipse、WingIDE には、リファクタリング用のツールが組み込まれていることを確認してください (名前の変更を含む)。そして、それは非常に安全なリファクタリングです - 何かがうまくいかない場合、IDE は ref を行いません。

また、リファクタリング中にコードが影響を受けないように、単体テストをいくつか追加することも検討してください。

于 2009-11-28T18:07:40.243 に答える
-2

sed を使用してこれを実行できます。秘訣は、正規表現が単語の境界を認識できることを思い出すことです。ツールがあれば、これはすべてのプラットフォームで機能します。Windows では Cygwin、Mac OS では開発ツールのインストールが必要になる場合がありますが、Linux ではすぐに使用できます。したがって、12 時間かけて man ページを読み、試行錯誤した後、grep、xargs、および sed でうまくいくはずです ;)

于 2012-12-26T22:12:43.023 に答える