問題タブ [legacy-code]

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 投票する
5 に答える
1161 参照

refactoring - 密結合コードの削除

これがだまされている場合は許してください。しかし、この正確な質問に当てはまるものは見つかりませんでした。

私は非常に緊密に結合されたレガシーアプリケーションを使用しています。外部サービスからその機能を取得するため、主要な機能の一部を引き出しています。

現在使用されていないコードの削除を開始するための最良の方法は何ですか?極端なベースから始めて、スタックを削除してリファクタリングする必要がありますか?昼食時に、レガシーコードを効果的に使用する方法を見ていきます。

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

architecture - レガシー アプリケーションを再構築するための戦略

.Net WPF でいくつかのレガシー COM アプリケーションを再構築するという新しい課題がまもなくやってくる予定です。可能であれば、機能や既存のコードを再利用する必要がありますが、その範囲は限られていると思います。

既存の機能を複製する必要がありますが、最新の拡張可能なアーキテクチャを使用して実現する必要があります。

このタイプのプロジェクトにアプローチするための一般的なアドバイスはありますか? このテーマに関する適切なリソースはありますか?

試行錯誤された手法や一般的な落とし穴はありますか?

0 投票する
2 に答える
161 参照

sql-server - レガシーアプリケーションで冗長なページ、ファイル、ストアドプロシージャを検索する

古いASPWebアプリケーションにはいくつかの恐怖があります。不要になったスクリプト、ページ、およびストアドプロシージャを見つける簡単な方法はありますか?(「old ___ code」、「delete_this」などの内容以外;-)

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

refactoring - レガシーコードのリファクタリングを実践するためのカタスのコーディング

ここ数ヶ月、型のコーディングにかなり興味を持っています。それらは私のプログラミングスキルを磨き、仕事で書くコードの品質を向上させるための素晴らしい方法だと思います。

カタスを見つけることができる場所はたくさんあります。お気に入り..

http://codekata.pragprog.com/

http://schuchert.wikispaces.com/Katas

http://www.codingdojo.org/

私はこれらがカタスの優れたリポジトリであることに気づきました...それらのいくつかでの私の試みは非常にやりがいがありました。

しかし、これまでに見たカタには、1つの欠点があると感じています。それらのどれも私が悪いコードのリファクタリングを練習することを可能にしないようです。初めてクリーンなコードを書く方法を学ぶのは素晴らしいことです...しかし、私の現在の仕事では、新しいコードを書く機会はあまりありません。むしろ、私はしばしばレガシーコードと戦い、モジュールをリファクタリングし、依存関係を排除し、結合を減らす方法を見つけようとしています。

そのため、レガシーコードをリファクタリングしてクリーンなコードに変換するスキルを磨くために使用できるいくつかのカタを探しています。

誰かがすでに存在するものを知っていますか?仕事中にたくさんの練習をしていることは知っていますが、依存関係を分解し、関心の分離を行う方法をすぐに理解できるようになるまで、スキルを磨きたいと思います。やりすぎ。

0 投票する
1 に答える
83 参照

legacy-code - レガシ アプリケーションが原因で、コードで追加された作業時間を特定しますか?

コスト分析のためにテスト済みのコードとは対照的に、レガシー コードで作業したためにどれだけの時間が追加されたかを判断するにはどうすればよいでしょうか。それを比較するための非レガシー コードで作業するベンチマークが本当にない場合。

0 投票する
1 に答える
141 参照

sql - トリガーによるMySQLスキーマからスキーマへの同期?

簡単なメモ: クライアントの問題を解決するために 19 日間の猶予があります。

背景: クライアントは、新しいアプリを 3 か月で出荷できると豪語する請負業者を雇いました。2か月と数日後、私は連れてこられ、その人は手放されました。完全なコードはなく、スキーマに何も考えられておらず、UI の嫌悪感もありません。

私には 2 つのアプリケーションがあります。1 つは必要なすべてのデータを持ち、もう 1 つはそうではありません。私は新しい TDD スタイルのコードを書いており、データ自体以外のすべての問題をカバーする、部分的に不正な操作を行った SOA インフラストラクチャを目指しています。もっと時間があれば、liquibase を使用してスキーマを忌まわしき破片にリファクタリングできますが (想像力を働かせてください)、そうしません... したがって、プラン B は次のとおりです。

アプリ A (挿入|更新|削除) エンティティ Foo は AppASchema.FooTable を更新し、ポスト トリガーを介して AppBSchema.FooLikeTable を更新し、その逆も同様です。

これが非常識なアイデアであることはわかっていますが、これは私が持っている最悪のアイデアの中で最も小さいものです。私の懸念は

  1. 無限ループを作成する可能性があります ( AppA トリガーは AppA を更新する AppB を更新します)
  2. 高い負荷はありませんが、これは基本的に ops を n*2 に倍増させるため、MySQL サーバーの容量の半分に達すると、インデックスの更新などの基本的な処理のために事実上フル容量またはそれに近い容量になるようです。
  3. さまざまな祝福として、元のスキーマ設計者はすべてのテーブルを InnoDB エンジンにしました...これはパフォーマンスにとって恐ろしいことですが、このセットアップにより、整合性を維持する可能性が高くなります。

トリガーを実装するための私の時間予算は 12 時間またはバーストです。

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

c++ - レガシー C C++ の組み込み

私は現在、レガシー C コード (SPICE バリアント) を組み込んだパフォーマンス クリティカルなアプリケーションに取り組んでいます。

問題は次のとおりです。

従来の C コードの作成者は、引数の受け渡しの使用が現代の大きな悪の 1 つであることを明らかに信じていました。したがって、すべての変数の約 90% がグローバルに宣言されました。

レガシ コードは、シミュレーションのために繰り返し呼び出す必要があり、このコード セクションへの同時呼び出しにスレッドを使用すると、全体の実行時間に有利になる可能性があります。

私のアイデアは、レガシー コードの複数のオブジェクトを作成して、多くのミューテックス ロックの必要性を排除できるように、レガシー C コード (g++ コンパイル用に既にわずかに変更しています) をカプセル化することでした。明らかに、グローバル変数はメンバー変数としてカプセル化されます。

これにより、別の問題がテーブルにもたらされました。従来のコーダーは、グローバル変数の初期化も信じていませんでした。おそらく、C はグローバル変数を 0 に初期化する傾向があるためです。ただし、C++ メンバー変数は、同じ処理を取得するために継ぎ目はありません。従来の C コードを正しく動作させるには、いくつかの変数を 0 に初期化する必要があります。しかし、膨大な量のグローバル変数が使用されているため、これらの変数を見つけることは非常に難しいことがわかっています。

レガシ C コードを大幅に変更する時間はありません。

私の質問は次のとおりです。

  1. C コードのカプセル化は、約 90 個のミューテックス ロックを使用するよりも高速であるという仮定は正しいですか?

  2. 初期化されていないメンバー変数の使用を見つける簡単な方法はありますか? (私が理解しているように、gccは自動変数に対してのみこれを行うことができます)。重要な変数のみを初期化できるようにするには?

  3. 質問 2 ではない場合 ... 通常のコンストラクターの init メソッドを使用せずに、すべてのメンバー変数を初期化する高速でクリーンな方法はありますか?

  4. または(ロングショット)自分自身を渡す引数を組み込むことができるように、プログラムフローに従う高速な方法はありますか?

どんな助けでも大歓迎です。注意

0 投票する
8 に答える
24587 参照

unit-testing - レガシ コードへの単体テストの追加

単体テストをレガシー コードに追加したことはありますか? コードはどれほど複雑で、すべてをスタブしてモック化するのはどれほど困難でしたか? 最終結果は価値がありましたか?

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

c++ - iostream と stdio の同期

レガシー コードに iostream を追加しようとしているため、これら 2 つのライブラリを同期したいと考えています。この記事によると、std::ios_base::sync_with_stdio を使用する必要があります。

さて、実際にどのように使用されているのだろうか(例をお願いします)、注意すべき副作用があります。

どうも

0 投票する
12 に答える
5127 参照

java - 継承されたコード:フォーマットするかフォーマットしないか?

私たちのチームは最近、非常にまとまりのないコードを継承しました。

その結果、私のチームリーダーは、ファイルを保存する前にコードの自動フォーマットのポリシーを適用することを決定しました。Eclipse(選択したIDE)には、各保存アクションの前にコードを自動的に自動フォーマットするオプションもあります。

個人的には、適切なコーディングは(ほとんどの場合)厄介なコードを防ぐと思いますが、自動フォーマットは適切なコーディングを意味しないと思うので、私はそれに反対しています。

あなたの意見は何ですか?