問題タブ [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 投票する
1 に答える
1342 参照

unit-testing - Luceneインデックスの単体テスト

私は別のインデックスで人気のある用語のインデックスを構築するレガシーコードに取り組んでいます。単体テストは実施されておらず、最初のインデックスの作成には非常に時間がかかるため、インデックス作成プロセスを待つのは面倒です。

2番目の(人気のある用語)インデックスを別の方法で構成したいと思います。Luceneインデックスが適切に作成されているかどうかをテストするためのベストプラクティスはありますか?

編集>> @Pascalのアドバイスに従って、RAMDirectoryを使用しています。次に、作成したインデックスをテストするために、indexReaderを設定し、用語の結果を繰り返し処理して、データが正常に表示されることを確認するために各用語を出力します。

コード:

インデックスが本当に大きい場合は、少しの間実行させてから、途中で停止します。

また、Lukeは、より徹底的に調べたい場合にインデックスを検査するための優れたツールです...私はただ速いものを探しています。

他のアイデアは大歓迎です!

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

unit-testing - レガシ コードを使用してテスト駆動開発を実装するにはどうすればよいでしょうか?

状況: 数百万行のコード、100 人を超える開発者、頻繁な欠陥。私たちは欠陥の繰り返しを避けたいと考えており、コード設計を改善したいと考えています (そうしない人がいるでしょうか?)。

テスト駆動開発 (最初の単体テスト、次にコード) は理想的に聞こえます。関数ごとにテスト ケースを作成します。

しかし、これほど多くのコードが書かれている中で、TDD をどのように実装できるのでしょうか? どこから始めますか? 低レベル関数から?

それとも、TDD を開始するには遅すぎますか?

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

php - リファクタリングが切実に必要なコードベースに機能を追加する

少し扱いに​​くいシステムで開発しています。これは99%文書化されておらず、ベストプラクティスに準拠しておらず、理解するのがかなり困難です(グローバル変数、50行にまたがる方法、評価の乱用など)。残念ながら、私はコードベースにかなり慣れていないので、機能を追加する必要があります。

そこには再利用できるコードがあると思いますが、締め切りに間に合わせる必要があり、救済に費やした時間が最後に急いでしまうのではないかと心配しています。長期的には何が良いですか?私の一部は可能な限り再利用したいと思っていますが、別の部分では、重複のリスクを冒して、新しい機能を最初から作成することに集中する必要があると述べています(既存のコードでより多くの時間を費やすときにリファクタリングする計画があります) ?私は後者に傾いていますが、いくつかの意見を聞きたかったのです。

ありがとう!

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

.net - WCF: レガシー API の質問のラップ

従来の .net アセンブリ API (クラスとインターフェイスのセット) を WCF サービスでラップする必要があります。サービスは、実質的に追加作業なしで呼び出しを既存のクラスに委任するプロキシとして構想されています。

そこで[ServiceContract] interface、既存の構造体とクラスを処理するメソッドを公開することを追加しました。しかし、wcf-proxy-generator (svcutil) は一部のフィールドを削除し (読み取り専用として宣言)、エイリアスに対して十分にスマートではありません (たとえば、 public bool Boolean1 { get { return Booleans[0] }}に変わりますbool Boolean1 { get; set; })。

混乱を避けるために、このようなレガシー クラスを複製することにしました。現在、一部の既存のクラスにはコントラクト セーフ バージョンがあり、WCF サービスには、コントラクト セーフ クラスをレガシ クラスに変換したり、その逆を行ったりする追加のコードがあります。

すべてのレガシークラスを複製することをお勧めしますか、それとも問題のあるクラスのみを変換しても問題ありませんか? 私が見逃したいくつかの余分なプロキシジェネレータパラメータがあるかもしれません.

前もって感謝します!

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

terminology - レガシーバグ複製の用語?

怠惰な好奇心から、バグのある機能に依存する古いクライアントとの下位互換性を維持するために、古いシステムの新しい実装でバグを複製する用語を知っている人はいますか? 仕様にないものを適切に複製するために、誤った動作をリバース エンジニアリングする必要があるという意味合いが含まれていれば、特に興味があります。

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

php - PHP5より前のコードを少し理解するための簡単なヘルプが必要です

私は別の質問からnstreesに切り替えられ、スクリプトを実行してきました。HTTP_POST_VARSこれは2005年に最後に更新され、PHPを1年弱しか使用していないため、すぐにはなじみのないもののように、明らかに非推奨になっているものに依存していました。

とにかく、コーディングスタイルは私の新人の目には奇妙に思えます。この関数のどの部分が機能するかについてセカンドオピニオンをお願いします。

上記のコードでは、よくわからないスポットをとしてマークしました// problem area x。それ以外はすべて元のスクリプトです。

PA1に関しては、クエリが正常に実行されたかどうかを確認するだけですか?

また、PA2、NetBeansは、「偶発的な割り当ての可能性があるため、条件での割り当ては避ける必要があります」という警告を表示します。...だから私はすぐにそれをからに変更し===もちろんスクリプトを壊しました。

それについて考えると、これは単なる別のエラーチェックだと思います$res。今回は、一部のデータが実際に返されたことを確認しますか?

最後に、これは奇妙なPHPですか、それとも私はそれを理解するにはあまりにも環境に優しいのでしょうか?

ありがとうおい!

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

c# - C# の拡張メソッド: なぜこれが機能するのですか?

なぜこれがエラーにならないのか、少し混乱しています。私はこのコードが古いレガシー ソフトウェアの奥深くにあることを発見し、それが機能することに驚きました。

拡張メソッドに関する私の経験は、次のように呼び出すことです。

これは静的メソッドでもあるためにのみ機能しますか? これは一般的な慣行であり、まだ見たことのないものですか、それとも古いレガシーコードの一部であり、火で殺す必要がありますか?

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

objective-c - ガベージコレクタが無効になっているため、CocoaUnitTestsを実行できません

いくつかのUnitTestをCocoaLegacyコードの束に追加しようとしています。単体テストバンドルを作成し、必要なすべてのソースとフレームワークを追加しましたが、ビルドは次のメッセージで失敗します。

ガベージコレクターを有効にしようとしましたが、別のエラーが表示されます。

ガベージコレクションなしでユニットテストを強制的に実行することは可能かどうか疑問に思います:何か手がかりはありますか?

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

project-management - 長期にわたる大規模プロジェクトのコードの配布責任

あなたが長い間開発された多くのコードを持つ大規模なプロジェクトのプロジェクトマネージャーであると仮定します。コードチームの一部には知識があり、他の部分には知識がありません。

チームメイト間で何らかの賢明な方法で責任を分散するのは良いことです。作者がまだチームにいるコードに問題はありません。ただし、このアプローチは、古いコードを変更するたびにその人を任命するという長い意思決定を回避するように開発する必要があります。これは、長い議論と多くの時間を費やすことにつながる可能性があります。

効率的、透過的、合理的な方法で、新しいチームに責任を負わずにコードを割り当てる手順を作成するために、どのアプローチ、ヒント、テクニック、プロセスを提案できますか?

今のところ、すべての開発者にプロジェクトのすべての部分を知らせようとはしていません。責任者がコードのすべての領域をカバーしているだけです。

0 投票する
14 に答える
2212 参照

java - 不適切なシステム設計でのコード リファクタリング

私は、古いシステムを引き継ぐ任務を与えられたジュニア ソフトウェア エンジニアです。私の予備評価に基づくと、このシステムにはいくつかの問題があります。

  1. スパゲッティコード
  2. 反復コード
  3. 10,000 行以上のクラス
  4. log4j を使用した誤用とオーバーログ
  5. 不適切なデータベース テーブルの設計
  6. ソース管理がありません -> このための Subversion をセットアップしました
  7. 書類の紛失 -> コードを読むこと以外は、ビジネス ルールがわかりません

システムの品質を高め、そのような問題を解決するにはどうすればよいですか?静的コード分析ソフトウェアを使用して、悪いコーディング慣行を解決することを考えることができます。

ただし、悪い設計の問題や問題は検出できません。これらの問題を段階的に解決するにはどうすればよいですか?