タグ付けされた質問 「refactoring」

リファクタリングは、既存のコードを再構築し、外部の動作を変更せずに内部構造を変更するための統制のとれた手法です。コードのリファクタリングに関する自由回答形式の質問は、Stack Overflowのトピックから外れていますが、コードレビューには適切な場合があります。


2
IntelliJ IDEAを使用してすべての未使用のコードを見つける方法は?
私が.javaファイルにいるとき、未使用のコードは通常灰色で表示されるか、このコードはおそらく(おそらく、いくつかの奇妙なJNI / Reflectionのコーナーケースのため)未使用であることを示す緑の下線が付いています。しかし、私はこのプロジェクトに何千ものJavaファイルがあり、そのような未使用の可能性のあるコードのすべてのインスタンスを見つけたいと思っています。IntelliJ IDEAでそれを行うにはどうすればよいですか?

21
Javaプロジェクトで未使用/デッドコードを見つける方法[終了]
閉まっている。この質問はスタックオーバーフローのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善してみませんか?Stack Overflowのトピックとなるように質問を更新します。 7か月休業。 この質問を改善する 大規模なJavaプロジェクトで未使用/デッドコードを見つけるためにどのツールを使用していますか?当社の製品は数年前から開発されており、使用されなくなったコードを手動で検出することは非常に困難になっています。ただし、未使用のコードはできるだけ削除するようにしています。 一般的な戦略/手法(特定のツール以外)の提案も歓迎されます。 編集:すでにコードカバレッジツール(Clover、IntelliJ)を使用していますが、これらはほとんど役に立ちません。デッドコードにはまだユニットテストがあり、カバーされているように見えます。理想的なツールは、コードに依存する他のコードがほとんどないコードのクラスターを識別し、ドキュメントを手動で検査できると思います。

19
C / C ++で余分な#includeを検出していますか?
ファイルのヘッダーセクションが常に大きくなるのに、小さくならないことがよくあります。ソースファイルの存続期間を通じて、クラスは移動してリファクタリングされている可能性があり、そこに存在する#includes必要のないものも少なくない可能性があります。それらをそこに残すと、コンパイル時間が長くなり、不要なコンパイル依存関係が追加されます。どれがまだ必要かを理解しようとするのは、かなり退屈な作業です。 不要な#includeディレクティブを検出して、安全に削除できるものを提案できるツールはありますか? リントは多分これをしますか?

10
Android Studioを見つけて交換する
Androidスタジオまたはコマンドラインスクリプトを使用して、プロジェクト全体で単語のすべての出現箇所を検索して置換し(リファクタリング->名前変更を使用した単一クラスだけでなく)、大文字と小文字を維持する方法はありますか? たとえば、サプライヤはマーチャント、サプライヤ->マーチャント、サプライヤ->マーチャントに移動する必要があります。私の上司は、私が取り組んでいるプロジェクトのために、サプライヤーと商人のすべてのインスタンスを変更することを望んでいます。私はそれを約1時間やっていて、私は自分の時間を無駄にしています。時間節約の提案があれば教えてください。

9
未使用のコードを見つける[終了]
閉まっている。この質問はスタックオーバーフローのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善してみませんか?Stack Overflowのトピックとなるように質問を更新します。 4年前休業。 この質問を改善する 大きなC#アプリケーションをリファクタリングする必要があり、使用されていない関数がたくさんあることがわかりました。未使用のコードをチェックして、未使用の関数をすべて削除するにはどうすればよいですか?
208 c#  .net  refactoring 

9
ReSharperに代わるものは何ですか?[閉まっている]
閉まっている。この質問はスタックオーバーフローのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善してみませんか?Stack Overflowのトピックとなるように質問を更新します。 6年前休業。 この質問を改善する ReSharperライセンスの購入を検討していますが、ReSharperに代わるものはありますか?ReSharperと比較してこれらをどのように評価しますか? 必ずしも無料の代替品である必要はありませんが、同等の製品がどれほど優れているかを知りたいだけです。

19
機能するC ++リファクタリングツールはありますか?[閉まっている]
閉まっている。この質問はスタックオーバーフローのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善してみませんか?トピックに合うように質問を更新してくださいStack Overflowのと。 6か月前に閉鎖。 この質問を改善する 大規模なコードベース(約100.000行)で確実に機能するC ++用のフル機能のリファクタリングツールを知っている人はいますか? 私はここ数年、何度も何度も見つけられるものを試しました:SlickEdit、Eclipse CDT。それらはすべてまったく使用できませんでした。 概要:私は時間をかけて「Visual Assist X」および「C ++のリファクタリング」を評価しました。どちらにもいくつかの印象的な機能がありますが、どちらも完璧とはほど遠いものです。通常、コードの大きなブロックを抽出することは、手動での変更なしでは満足のいくものではありません。そのため、効果はありません。 「Visual Assist X」には、より完全なオートコンプリートなどの優れた機能があります。ただし、特定のポイントでちらつきが多くなり、速度が大幅に低下します。 したがって、私の意見では、答えは「いいえ、C ++用の本番環境対応のリファクタリングツールはありません」です。 UPDATE 2015年3月 hdoghmensの返信については、今日、C ++用のResharperを試しました。彼のリンク https://www.jetbrains.com/resharper/はC ++について何も述べていません。しかし、ここで1年以上前に発表されたResharper C ++を見つけました。 https://www.jetbrains.com/resharper/features/cpp.html 20MBのコードベースを使ってVC2010で試してみました。 テスト1:メソッドの抽出:Resharper例外が発生します。ソースコードは変更されていません。 テスト2:ソースが異なるメソッドの抽出:正常に機能する テスト3:抽出された関数の署名を変更する:壊れたC ++コードの結果: bool myclass::do_work123(<unknown long Color>int& Filled*&, long, int&) おそらくそれがC ++がメインページにリストされていない理由です。 私の意見では、この質問への答えはまだ「いいえ」です。
161 c++  refactoring 

30
あなたの.vimrcには何がありますか?[閉まっている]
現在のところ、この質問は、Q&A形式には適していません。事実、参考文献、専門知識によって回答が裏付けられることを期待していますが、この質問は、討論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問が改善され、場合によっては再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前に閉鎖。 ロックされています。この質問とトピックへの回答はロックされています。質問はトピックから外れていますが、歴史的に重要です。現在、新しい回答や相互作用を受け入れていません。 ViとVimは本当に素晴らしいカスタマイズを可能にし、通常は.vimrcファイル内に保存されます。プログラマーの典型的な機能は、構文の強調表示、スマートインデントなどです。 .vimrcに隠されている生産的なプログラミングのための他のトリックはありますか? 特にC#の場合、リファクタリング、自動クラス、および同様の生産性マクロに主に関心があります。
157 vim  refactoring 

17
nullセーフなcompareTo()実装を単純化する方法は?
compareTo()このような単純なクラスのメソッドを実装しています(Collections.sort()Javaプラットフォームが提供するその他の便利な機能を使用できるようにするため)。 public class Metadata implements Comparable<Metadata> { private String name; private String value; // Imagine basic constructor and accessors here // Irrelevant parts omitted } 私が欲しい自然順序付け名前が同じである場合の値でソート)の名前と2でソート)1;:これらのオブジェクトのためにあることを どちらの比較でも、大文字と小文字は区別されません。どちらのフィールドでも、null値は完全に許容されるためcompareTo、これらの場合に壊れてはなりません。 頭に浮かぶ解決策は、次のようなものです(ここでは「ガード句」を使用していますが、他の人は単一の戻り点を好むかもしれませんが、それは重要ではありません)。 // primarily by name, secondarily by value; null-safe; case-insensitive public int compareTo(Metadata other) { if (this.name == null && other.name != null){ …

22
C ++コードの単体テスト-ツールと方法論[終了]
閉まっている。この質問はスタックオーバーフローのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善してみませんか?Stack Overflowのトピックとなるように質問を更新します。 4年前休業。 この質問を改善する 私は数年前から開発されている大規模なc ++システムに取り組んでいます。既存のコードの品質を向上させるための取り組みの一環として、大規模な長期リファクタリングプロジェクトに取り組みました。 C ++で単体テストを作成するのに役立つ優れたツールを知っていますか?たぶんJunitやNunitに似ていますか? 誰かがユニットテストを考慮せずに書かれたモジュールのユニットテストを書く方法論について何か良いアドバイスを与えることはできますか?

24
関数が長すぎるのはいつですか?[閉まっている]
現在のところ、この質問は、Q&A形式には適していません。事実、参考文献、専門知識によって回答が裏付けられることを期待していますが、この質問は、討論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問が改善され、場合によっては再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 35行、55行、100行、300行?いつそれを分解し始めるべきですか?60行(コメントを含む)の関数があり、それを分解することを考えていたので、私は尋ねています。 long_function(){ ... } に: small_function_1(){...} small_function_2(){...} small_function_3(){...} 関数はlong_functionの外では使用されません。関数を小さくすると、より多くの関数が呼び出されるなどになります。 関数をいつより小さな関数に分解しますか?どうして? メソッドは論理的なことを1つだけ実行する必要があります(機能について考えます) 方法を一文で説明できるはずです ディスプレイの高さに合わせる必要があります 不必要なオーバーヘッドを避けてください(明らかなことを指摘するコメント...) 小さな論理関数の場合、単体テストは簡単です 関数の一部が他のクラスまたはメソッドで再利用できるかどうかを確認します クラス間の過剰な結合を回避する 深くネストされた制御構造を避ける 答えをありがとう、リストを編集し、正しい答えに投票してください。 私はそれらの考えを念頭に置いて今リファクタリングしています:)

3
レガシーコードのリファクタリングを実践するためのKatasのコーディング
ここ数ヶ月、カタのコーディングにかなり興味を持っています。これらは私のプログラミングスキルを磨き、仕事で書くコードの品質を向上させる素晴らしい方法だと思います。 カタが見つかる場所はたくさんあります。お気に入り.. http://codekata.pragprog.com/ http://schuchert.wikispaces.com/Katas http://www.codingdojo.org/ これらはKatasの優れたリポジトリであることがわかりました...それらのいくつかでの私の試みは非常にやりがいのあるものでした。 しかし、これまでに見たカタはすべて短所があるように感じます。どれも私が悪いコードのリファクタリングを練習することを許可していないようです。初めてきれいなコードを書く方法を学ぶのは素晴らしいことです...しかし、私の現在の仕事では、新しいコードを書く機会があまりありません。むしろ、私はしばしばレガシーコードと戦い、モジュールをリファクタリングし、依存関係を排除し、結合を減らす方法を理解しようとしています。 そのため、レガシーコードをリファクタリングしてクリーンなコードに変換するスキルを磨くために使用できるいくつかのカタを探しています。 誰かがすでに存在することを知っていますか?仕事中にたくさんの練習を積んでいることはわかっていますが、依存関係を分解してクラスの懸念を分離する方法をすぐに確認できるようになるまで、スキルを磨きたいですやりすぎ。

2
Facebook Reactでのコード再利用のためのミックスインとコンポーネントの使用
私はバックボーンプロジェクトでFacebook Reactを使用し始めており、これまでのところ、それは本当に順調です。 しかし、Reactコードに重複が侵入していることに気づきました。 たとえば、やのような状態のフォームのようなウィジェットがいくつかあります。ボタンを押すと、フォームを検証し、要求を行って、状態を更新する必要があります。もちろん、状態はフィールド値とともにReact内に保持されます。INITIALSENDINGSENTthis.state これらがバックボーンビューである場合、私はと呼ばれる基本クラスを抽出しますFormViewが、私の印象では、Reactはビューロジックを共有するサブクラスを承認もサポートもしていないようです(私が間違っている場合は修正してください)。 Reactでコードを再利用するための2つのアプローチを見てきました。 Mixins(Reactに同梱されているLinkedStateMixinのような); コンテナコンポーネント(react-infinite-scrollなど)。 Reactでの継承よりもミックスインとコンテナーが優先されることは正しいのでしょうか?これは意図的な設計決定ですか? 2番目の段落の「フォームウィジェット」の例に、ミックスインまたはコンテナコンポーネントを使用する方が理にかなっていますか? ここでの要点だFeedbackWidgetとJoinWidgetそれらの現在の状態では。それらは類似した構造、類似したbeginSendメソッドを持ち、両方ともいくつかの検証サポートが必要です(まだありません)。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.