問題タブ [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.
c++ - 大規模なコードベースでのコード標準リファクタリング
私のスタジオには、10 年以上にわたって開発された大規模なコードベースがあります。私たちが始めたコーディング標準は、社内の少数の開発者によって開発されたものであり、C++ に関連するあらゆる種類の標準について心配する必要が生じるずっと前に作成されました。
最近、社内で小規模な研究開発プロジェクトを開始し、コーディング規約を環境により適したものに更新しました。R&D 作業は、既存のプロジェクト コードに統合される予定です。私たちが直面している大きな問題の 1 つは、2 つの作業領域に対して 2 つの標準があり、コード ベースが交差することです。スタジオで 2 つの基準を使いたいわけではありません。(どのようにしてこの状況に陥ったかは重要ではありません。ただ、私たちがそうならないことを望んでいたというだけです。)
問題は、既存のコードのリファクタリングです。私は、2 つのコード ベース (1 つは比較的小さいもの、もう 1 つは非常に大きいもの) の外観が異なることにあまり熱心ではありません。既存のコードベースの 1 つをリファクタリングして、他の標準に準拠させることに興味があります。問題は、コードベースが小さいほど(IMO)より望ましい標準であるということです。
大規模なリファクタリングを実行できるツールを探し始めました。コードを並べ替えたり締めたりすることには興味がありません。私は次のようなものを変えることに興味があります
に
基本的に関数/変数レベルの名前変更を行っています。Visual Assist のようなものは時間がかかるため、使用したくありません。数十万行のコードを含む 10000 以上のソース/ヘッダー ファイルがあります。一度に 1 つのクラスで VA を使用すると、時間の無駄になり、努力する価値はありません。
SOに関する別の投稿でVeraに出くわしました。それは仕事をし、うまくやるかもしれないようです。私がいる状況で Vera を使用した特定の経験があるかどうか、または仕事を成し遂げる可能性のあるツールに関する他の推奨事項があるかどうかを知りたいです。このツールが実際にコード構造を理解していることが重要だと思います。これにより、慎重に行わないと微妙なバグにつながるため、検索/置換の方法で変数の名前を変更するだけにならないようにすることができます。
編集: 私の例では、名前の間で _ を使用することからキャメルケース型の表記法に移行することを示していますが、別の方法で移動する方が有益かもしれません。大規模な名前変更に役立つ一般的なソリューションを本当に探しています。
ありがとう。
language-agnostic - 「醜さ」はどこに置くべきですか?
シナリオ: なんらかの方法で微調整する必要がある関数があります (例: 場所によって動作が若干異なるようにする)。何らかの理由で、関数または既存の呼び出しサイトのいずれかで、コードに醜いものを追加する必要があります。「醜い」の合計はどちらの場合も同じであると仮定します。
問題は、どの選択肢を選ぶべきか、そしてその理由です。
それを見る必要がないようにカプセル化する必要がありますか、それとも関数にセマンティックなゴミを追加しないように抽出する必要がありますか?
あなたの選択に何が影響しますか?次の場合はどうでしょうか。
- この関数は、現在の場所以外から呼び出されることはありません。
- 関数への新しい呼び出しには、「醜さ」は必要ありません。
- 関数は今のところ本当にきれいで一般的です
- 関数はすでにハックジョブです。
- あなたは関数を書きました
- あなたは関数を書きませんでした
- 等
delphi - Delphi 7の「コントロールの名前を変更」?
この質問に続いて、私はあまりうまく書かれていない大規模な Delphi 7 コードベースに取り組んでいます。
小さな例として、次のようなコードを見ています。
さらに 6 つの非常によく似たブロックが続きます。全体がこのスタイルです。したがって、コントロールに適切な名前を付ければ、これははるかに読みやすくなると思います。
グローバルな検索と置換を使用することもできますが、複数のフォームで同じ名前を使用すると問題が発生します。また、変更には注意が必要です (たとえば、SpeedButton1 の前に SpeedButton10 を変更する必要があります)。
「スマートな」名前変更を実行できるプラグインはありますか?
編集:
申し訳ありませんが、前にこれについて言及する必要がありました:GExpertsとCastaliaの「コンポーネントの名前変更」機能の両方を試しましたが、どちらも最初にフォームにコンポーネントを追加するときに使用することを意図しているようです.
コード内で検索と置換を実行したり、既存のイベントの名前を変更したりしません (SpeedButtonXClick() -> cmdCreditClick())。
私は何かを逃しましたか?
asp.net-mvc - Preview 5 から Beta への ASP.NET MVC アップグレード中の問題?
ASP.NET MVC Preview 5 から新しくリリースされたベータ版にアップグレードするときに、どのような問題またはリファクタリングを行う必要がありましたか?
ruby-on-rails - ダックタイピングでこの方法を改善できますか?
「ダックタイピング」の意味を誤解していないことを願っていますが、私が読んだことから、オブジェクトがどのタイプ/クラスであるかではなく、メソッドにどのように応答するかに基づいてコードを記述する必要があることを意味します。
コードは次のとおりです。
私が望むのは、キーが ActiveRecord オブジェクトの ID を表す整数であるハッシュになるようにすることです。all?
IDを取得する必要があるかどうかを判断するために、ハッシュキーを2回反復処理する必要があるのは特に好きではありません。
もちろん、このコードを改善するための他の提案も受け入れます:)
c# - C# で繰り返されるハードコードされたループと条件を削除する
同じオブジェクトの 2 つのインスタンスを比較し、それらの違いのリストを生成するクラスがあります。これは、主要なコレクションをループし、他のコレクションのセットに変更内容のリストを入力することによって行われます (これは、以下のコードを参照するとより理解できるかもしれません)。これは機能し、「古い」オブジェクトと「新しい」オブジェクトの間で何が追加および削除されたかを正確に知らせるオブジェクトを生成します。
私の質問/懸念はこれです...それは本当に醜いです、たくさんのループと条件があります。ハードコーディングされた条件の無限のグループに大きく依存することなく、これを保存/アプローチするより良い方法はありますか?
対象となるフレームワークは 3.5 です。
performance - ストアドプロシージャのリファクタリング
現在、複雑なフェッチを実行しているストアドプロシージャがあり、使用するとタイムアウトになることがよくあります。私の部門で提案された解決策は、単にタイムアウト時間の長さを増やすことでした。本当にやりたくないです。このsprocをリファクタリングしたいのですが、非常に複雑で文書化されていないため(レガシーシステム)、リファクタリングによって同じ機能がより効率的に実行されないのではないかと心配しています。同じ関数がより短い時間で実行されることを保証するためにストアドプロシージャをリファクタリングするときに使用する戦略はありますか?
これは、Microsoft SQLServer2005のストアドプロシージャです。
c# - ラムダ式の繰り返しをなくすリファクタリング
これら 2 つの方法は繰り返しを示します。
この繰り返しをなくすためにリファクタリングするにはどうすればよいですか?
更新: おっと、重要な点に言及するのを怠っていました。FooEditDto は FooDto のサブクラスです。
javascript - JavaScriptで継承を行う「正しい」方法はありますか? もしそうなら、それは何ですか?
私は既存のコードにテストを追加する方法を学ぼうとしています - 現在、 Working Effectively With Legacy Codeを読んでいます。私は JavaScript のいくつかの原則を適用しようとしてきましたが、今はインターフェースを抽出しようとしています。
JavaScript でインターフェイスを作成する方法を検索しても、多くは見つかりませんでした。また、継承について私が見つけたのは、いくつかの異なる方法があるようです。(独自の基本クラスを作成して、継承を容易にする便利なメソッドを提供する人もいれば、関数を使用する人もいれば、プロトタイプを使用する人もいます)。
正しい方法は何ですか?JavaScript でインターフェースを抽出するための簡単な例はありますか?
python - windows python 2.3 を使用した着信 poplib リファクタリング
こんにちはみんな、これをリファクタリングして、賢明にpythonicになるようにしてください。
また、_replace_whitespace メソッドでは、処理を引き起こす可能性のあるすべての不正な文字を取り除く何らかのクリーニング ルーチンが必要です。
基本的に、標準的な方法でメールを受信トレイ ディレクトリに書き込みたいと考えています。
私はここで何か間違っていますか?