問題タブ [refactoring]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
version-control - リファクタリングとソース管理: 方法
私はTDD、リファクタリング、パターンの背後にあるアイデアに完全に同意していますが、これらのアイデアには全体的に大きなギャップがあるように見えます.あなたが取り組んでいると、あちこちでマージの競合が発生し始め、ほとんどの差分/マージ ソフトウェアは、関数を独自のクラスにリファクタリングしたことを認識できません。
チームの全員に大きな頭痛の種を引き起こすことなく、リファクタリングによってコードをクリーンアップするにはどうすればよいでしょうか?
jquery - 複数のjQuery電子メールフィールドフォームの検証を処理するための最良のリファクタリング
添付されたコードをリファクタリングして複数の電子メールアドレスに対応するための最良の方法は何ですか?
添付されたHTML/jQueryは完全であり、最初の電子メールアドレスに対して機能します。コードをコピー/貼り付けして変更することで、他の2つをセットアップできます。ただし、既存のコードをリファクタリングして、複数の電子メールアドレスフィールドを処理したいと思います。
ruby-on-rails - Rubyでのリファクタリング
RubyまたはRoRのリファクタリングをサポートするプログラムまたはIDEはありますか?
refactoring - レガシーコードの書き換え
私の部署は現在、かなり大きな COBOL コード ベースを維持するというタスクの責任に直面しています。ビジネス ニーズに対応するために新しい機能を追加する方法を考えています。最近は COBOL プログラマーを獲得するのが難しく、Java や C# などの最新の言語を使用することで生産性が向上すると考えています。
次の 4 つのオプションがあると考えています。
- すべてをゼロから書き直して、古いアプリケーションを置き換える準備が整うまで放置します
- すべてをゼロから書き直し、一部の人に古いアプリケーションを維持してもらい、新しいアプリケーションが構築されているときに新しいビジネス ニーズに対処する
- すべての新しい機能を最新の言語で記述し、新しいコードを古い機能と統合する方法を見つけます。
- 古いアプリケーションを維持し続けます。
私たちにとって最良の選択肢は何だと思いますか、またその理由は何ですか?
refactoring - リファクタリングの仕事を小遣いの多い上司にどのように正当化しますか?
あなたはプレッシャーの下でいくつかの重要な機能を提供するための大量のコードを作成しました。いくつかのコーナーをカットし、いくつかのコードを、SerialIndirectionShutoffManager.. のような名前の過度に肥大したクラスにマッシュアップしました。
あなたは上司に、これを片付けるのに1週間かかると伝えます.
「どうしたの?」
「私のコードは豚小屋です!」
「もっとバグ修正があるということですか?」
「そうじゃなくて、もっと…」
「もっと速く走らせますか?」
「そうかもしれませんが、そうではありません..」
「それなら、機会があればきちんと書いておくべきだった。今はあなたがここにいてくれてうれしいです。はい、先に進んで、今週末に来てくれるように頼まなければなりません..」
Matin Fowler の本を読んだことがありますが、この問題に関する彼のアドバイスに同意できるかどうかはわかりません。
- 定期的なコード レビューを奨励して、リファクタリング作業が開発プロセスの自然な部分として奨励されるようにします。
- 言わないでください、あなたは開発者であり、あなたの義務の一部です。
これらの方法はどちらも、上司とのコミュニケーションの必要性から逃れています。
上司に何と言いますか?
refactoring - 容赦なくリファクタリングするか、捨てるためにビルドしますか?
新しいシステム コンセプトや新しいテクノロジーが使用される場合、システムを構築して破棄する必要があります。最適な計画でさえ、最初から正しく実行できるほど全知ではないからです。したがって、1つを捨てることを計画してください。とにかく、そうするでしょう。
-- Fred Brooks、The Mythical Man-Month [私の強調]
捨てるものを作る。それが彼らが私に言ったことです。その後、彼らは私たち全員が今ではアジャイルになっているので、容赦なくリファクタリングする必要があると私に言いました。何を与える?
トラブルから抜け出す方法をリファクタリングする方が常に良いですか? そうでない場合は、いつそれを使い続けるか、いつあきらめて最初からやり直すかを決定するのに役立つ経験則を誰かが提案できますか?
c++ - C++コードの単体テスト-ツールと方法論
私は、数年前から開発されている大規模なc++システムに取り組んでいます。既存のコードの品質を向上させる取り組みの一環として、大規模な長期リファクタリングプロジェクトに取り組みました。
C ++で単体テストを作成するのに役立つ優れたツールを知っていますか?たぶん、JunitやNunitに似たものですか?
ユニットテストを念頭に置いて作成されたモジュールのユニットテストを作成する方法について、誰かが良いアドバイスをすることはできますか?
.net - ArgumentExceptionを構築するときにパラメータ名をプログラムで決定する方法は?
ArgumentException を作成するときに、いくつかのオーバーロードが、無効な引数のパラメーター名である文字列を取ります。メソッドのパラメーター名を変更するたびに、この ctor パラメーターを更新することを覚えておく必要がないのはいいことだと思います。リフレクションを使用してこれを行う簡単な方法はありますか?
更新:これまでに 2 人の回答者に感謝します。あなたは両方とも質問によく答えますが、解決策はまだメンテナンスの頭痛の種です。(わかりました、ちょっとした頭痛ですが、それでも...)説明すると、後でパラメーターを並べ替える場合、または以前のパラメーターを削除する場合、例外構築コードを再度変更することを忘れないでください。の線に沿って何かを使用できる方法はありますか
関連するパラメータを扱っていることを確認するには?そうすれば、コンパイラが介入して、私が例外をひどく構築するのを防ぎます。
とは言っても、元の質問の「単純な」部分はそうではないのではないかと疑い始めています。たぶん、文字列リテラルの使用に我慢する必要があります。:)
java - クラスファイルの2番目のクラスを独自のファイルに抽出できます
私はしばしば、作業中のクラス内に内部クラスを作成することによって、最初にコードをリファクタリングします。完了したら、全体を新しいクラス ファイルに移動します。これにより、新しいクラスへのコードのリファクタリングが非常に簡単になります。なぜなら、A) 1 つのファイルしか扱っていないからです。B) 名前がよくわかるまで、新しいファイルを作成しないからです (最終的には複数のクラスとして)。
Eclipse が最終的な動きを助ける方法はありますか? クラスが必要なパッケージを指定するだけで、クラス名からファイル名を、パッケージからディレクトリを割り出すことができます。
これは些細なリファクタリングのように見え、本当に明白ですが、それを実現するためのキーストローク/ジェスチャ/その他がわかりません。ドラッグ、メニュー、コンテキスト メニュー、およびキーボード ショートカットの参照を試みました。
これ知ってる人いる?
[編集] これらは既にこのファイルの「トップ レベル」クラスであり、内部クラスではなく、「Move」は新しいクラスを作成したくないようです。これは、私が通常行う難しい方法です。外に出て、空のクラスを作成し、戻って移動する必要があります。ワンステップですべてをやりたいと思います。
c# - CollectionBaseから継承するクラスからジェネリックにリファクタリングする方法は?
私は約250,000行のコードであるアプリケーションに取り組んでいます。私は現在、元々.NET1.1で構築されたこのアプリケーションに取り組んでいる唯一の開発者です。全体に浸透しているのは、CollectionBaseから継承するクラスです。すべてのデータベースコレクションは、このクラスを継承します。代わりに、ジェネリックコレクションリストから継承するリファクタリングを検討しています。言うまでもなく、MartinFowlerのリファクタリングの本には提案がありません。このリファクタリングを試みる必要がありますか?もしそうなら、このリファクタリングに取り組むための最良の方法は何ですか?
はい、全体に単体テストがありますが、QAチームはありません。