問題タブ [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.

0 投票する
6 に答える
1248 参照

refactoring - リファクタリングの制限は何ですか?

私は、既存のソフトウェア アーキテクチャを改善する上でのリファクタリングの制限について調査しています。目標を達成するにはリファクタリングが不十分である、またはまだ未熟であると感じた経験をお聞きしたいと思います。

0 投票する
11 に答える
4350 参照

refactoring - 品質の向上に最も大きな影響を与えるレガシー コードベースに対して何ができますか?

レガシー コードベースで作業する場合、コードベースの品質を向上させるために時間の経過とともに最も大きな影響を与えるものは何ですか?

  • 未使用のコードを削除
  • 重複したコードを削除
  • 単体テストを追加して、カバレッジが低い場合のテスト カバレッジを改善します
  • ファイル間で一貫したフォーマットを作成する
  • サードパーティのソフトウェアを更新する
  • 静的解析ツール (ieFindbugs) によって生成される警告を減らす

コードベースは、さまざまなレベルの専門知識を持つ多くの開発者によって長年にわたって書かれており、多くの領域がテストされておらず、テストの作成にかなりの時間を費やさないとテストできない領域もあります。

0 投票する
5 に答える
507 参照

c++ - ネイティブC++から離れてコードのビットをリファクタリングするためのオプション?

したがって、パフォーマンスについて話すときによく聞かれるコメントの1つは、どの言語でもコードを記述して、作業を最速で実行できるというものです。特定の領域でのパフォーマンスが問題になる場合は、それらのビットをC /C++で書き直してください。

しかし、ネイティブC++アプリから始めている場合はどうでしょうか。Python、Ruby、C#などの言語で簡単なビットを記述したり、古いビットをリファクタリングしたりする場合、どのようなオプションがありますか?ネイティブ側と他の側の間でデータを転送する必要があることに注意してください。C ++クラスをデータとして渡しながら、「より簡単な」言語で記述された関数を簡単に呼び出すことができれば、すばらしいでしょう。

C#などで新しいコードをクランクアウトしたり、古いコードをリファクタリングしたりできれば、非常に役立つ無愛想なWin32アプリがあります。C ++の複雑さを必要とするものはほとんどなく、少し厄介な部分を処理することはプログラミングプロセスを引きずっています。

0 投票する
7 に答える
2451 参照

html - テーブルベースの HTML レイアウトを CSS にリファクタリングするためのツールは?

複雑な表ベースのレイアウトと、重複して無駄なタグが多数ある HTML ページがあるとします。たとえば、次のようになります。

ページをよりコンパクトな形式にリファクタリングするタスクを支援するツールはありますか? たとえば、CSS スタイルとセレクターを自動的に生成するツールはありますか? それはテーブルを div レイアウトに変換しますか?

問題の順序を理解するために、私が見ているページは 8000 行を超える HTML と JavaScript であり、画像を除いて 500Kb になります!


更新:再。「あきらめてゼロから始める」コメント。現実の世界では、それはどういう意味ですか?ページを印刷してスキャンし、Dreamweaver で背景画像として設定し、それから始めますか? 真剣に?それは本当にリファクタリングよりも効率的でしょうか?


更新: 私は「ゼロからトレースする」ことを中傷しているわけではありませんし、Dreamweaver が私の選択したツールであるとほのめかしているわけでもありません。レイアウトのリファクタリングが難しい問題だと考えられていることに、私は非常に驚いています。

0 投票する
10 に答える
15396 参照

c# - コードのリファクタリング: いつ何をするか?

.NET を使い始めて以来、ヘルパー クラスまたは部分クラスを作成して、コードを配置し、独自の小さなコンテナーなどに格納するようにしています。

私が知りたいのは、可能な限りクリーンで洗練されたコードを作成するためのベスト プラクティスです。

明らかにきれいなコードは主観的なものですが、ポリモーフィズム、継承、インターフェイス、クラスなどの (使用方法ではなく) いつ使用するか、およびクラスをより適切に設計する方法 (単に「 DatabaseHelper」、コードのこの悪い習慣は wiki のにおいがすると考える人もいました)。

この種の意思決定に役立つリソースはありますか?

私は CS やソフトウェア エンジニアリングのコースを開始したことすらなく、実際の教育リソースはかなり限られていることを心に留めておいてください。

0 投票する
21 に答える
166853 参照

java - Javaプロジェクトで未使用/デッドコードを見つける方法

大規模なJavaプロジェクトで未使用/デッドコードを見つけるためにどのツールを使用していますか?当社の製品は数年前から開発されており、使用されなくなったコードを手動で検出することは非常に困難になっています。ただし、未使用のコードは可能な限り削除するようにしています。

一般的な戦略/手法(特定のツールを除く)の提案も歓迎します。

編集:私たちはすでにコードカバレッジツール(Clover、IntelliJ)を使用していますが、これらはほとんど役に立ちません。デッドコードにはまだ単体テストがあり、カバーされているように表示されます。理想的なツールは、それに依存する他のコードがほとんどないコードのクラスターを識別し、ドキュメントの手動検査を可能にするだろうと思います。

0 投票する
4 に答える
16453 参照

c# - What tools and techniques do you use to find dead code?

What tools and techniques do you use to find dead code in .NET?

In the past, I've decorated methods with the Obsolete attribute (passing true so the compiler will issue an error, as described in MSDN).

I'd be interested in seeing the suggestions of others (beyond tools like FxCop or ReSharper). I want to make sure I'm not missing out on other tools that would be helpful.

0 投票する
6 に答える
8318 参照

oop - カップリング、結束、デメテルの法則

デメテルの法則は、自分が直接知っている対象にのみ話しかけるべきであることを示しています。つまり、他のオブジェクトと通信するためにメソッド チェーンを実行しないでください。これを行うと、中間オブジェクトとの不適切なリンクが確立され、コードが他のコードに不適切に結合されます。

良くないね。

解決策は、あなたが知っているクラスが、関係のあるオブジェクトに責任を委任する単純なラッパーを本質的に公開することです。

それは良い。

でも、それだとクラスの結束が弱くなるらしい。もはや、それが何をするかについて正確に責任を負うだけではなく、関連するオブジェクトのインターフェースの一部を複製することによって、ある意味でコードのまとまりをなくすデリゲートも持っています。

良くないね。

それは本当に結束力を低下させるのでしょうか?それは2つの悪の小さい方ですか?

これは開発の灰色の領域の 1 つで、境界線がどこにあるかを議論できる場所ですか、それとも、どこに境界線を引くか、その決定を下すために使用できる基準を決定するための強力で原則に基づいた方法はありますか?

0 投票する
72 に答える
254722 参照

vim - あなたの .vimrc には何がありますか?

Vi と Vim を使用すると、通常は.vimrcファイル内に保存される、非常に優れたカスタマイズが可能になります。プログラマにとって典型的な機能は、構文の強調表示、スマート インデントなどです。

.vimrc に隠されている、生産的なプログラミングのための他のトリックは何ですか?

私は主に、リファクタリング、自動クラス、および同様の生産性マクロ、特に C# に興味があります。

0 投票する
3 に答える
523 参照

python - リストをクリアする

リストをクリアできないのは面倒です。この例では:

2回目にaを空のリストに初期化すると、リストの新しいインスタンスが作成されますが、これはメモリ内の別の場所にあるため、最初のリストを参照するために使用することはできません。

同じポインターを保持する唯一の方法は、次のようなことです。

これはかなり長ったらしいですが、これを解決するより良い方法はありますか?