問題タブ [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.
c++ - 大きなプロジェクトで変更を開始する方法
10万行を超えるコードを使用して、既存のC++プロジェクトを拡張する必要があります。
私の質問は、そのようなプロジェクトをどこからどのように始めるかです。
コードが十分に文書化されていない場合、問題はさらに大きくなります。大規模なプロジェクトでコードフローを研究するための自動化されたツールはありますか?
ありがとう、
.net - Visual Basic 2005 のグローバル キーワード?
Visual Basic .NET 7.0 (Visual Studio.NET 2002) で記述されたレガシー コードを社内で継承する必要があります。私は VB.NET の経験があまりなく、次のコード行で問題が発生します。
Visual Studio で次のエラーが発生しました: エラー 31 キーワードが識別子として無効です。C:\Documents and Settings\Administrator\Desktop\POMan\WebApplication1\Global.asax.vb 4 14 C:...\POMan\
どうすればこれを修正できますか?
unit-testing - レガシ Visual C++ コードの単体テスト ハーネスを整理するにはどうすればよいですか?
Visual Studio 2005 C++ プロジェクトがあります。これはコンソール アプリケーションです。
テスト ハーネスの下でコードの一部を取得したいのですが、最適な処理方法がわからない問題に遭遇しました。
テスト コードのほとんどが本番環境で通常の .exe になることを望まないので、テスト用に別のプロジェクトを作成するのが最善だと考えました。最初の問題です。この新しいプロジェクトは、残りのコードをどのように呼び出すのでしょうか? レガシ コードを単一のエントリ ポイントを持つ .lib または .dll にして、レガシ コードのメインを呼び出す別のプロジェクトを作成する必要がありますか?
#ifdef TESTING
コードが本番環境の .exe に含まれないように、すべてのテストを完全にファイルに入れるという醜いハックを行う必要がありますか? その場合、テスト フレームワークを条件付きでロードするにはどうすればよいですか? テスト用に別のプロパティ構成を使用しますか?
私は基本的に、Visual C++ のレガシー .exe プロジェクトでテスト ハーネスを取得する方法についての提案を探しています。
c++ - 単体テストのために cout と stdout の両方を C++ の文字列にリダイレクトする
私は単体テストでいくつかのレガシーコードを取得することに取り組んでおり、既存のプログラムの動作を感知する唯一の方法はコンソール出力からです。
C++ で stdout を別のファイルにリダイレクトする方法についてオンラインで多くの例を目にしますが、テストがディスクに依存する必要がないようにメモリ内ストリームにリダイレクトする方法はありますか?
レガシ コードが stdout に送信するものをすべて std::string に取得して、出力で簡単に .find できるようにしたいと考えています。
編集
レガシ コードは非常に悪いため、 と が混在していcout << ..
ますprintf
。これが私がこれまでに持っているものです:
問題は、これがprintf を使用して出力をキャプチャしないことです。両方を兼ね備えたものが欲しい。何か案は?
sql - 結合パフォーマンスと体系的な非正規化に関する優れた文献はありますか?
この質問の当然の帰結として、一度に 1 つのテーブルに常にアクセスするために RDMBS を使用して結合の最適化と体系的な非正規化を行うことの利点について相談し、伝えることができる優れた比較研究があるかどうか疑問に思っていました。
具体的には、次の情報が必要です。
- パフォーマンスまたは正規化と非正規化。
- 正規化されたシステムと非正規化されたシステムのスケーラビリティ。
- 非正規化の保守性の問題。
- 非正規化によるモデルの一貫性の問題。
私がここでどこに行くのかを見るためのちょっとした歴史: 私たちのシステムは社内のデータベース抽象化レイヤーを使用していますが、それは非常に古く、複数のテーブルを処理することはできません. そのため、すべての複雑なオブジェクトは、関連する各テーブルで複数のクエリを使用してインスタンス化する必要があります。システムが常に単一のテーブルを使用するようにするために、テーブル全体で体系的な非正規化が使用され、場合によっては 2 ~ 3 レベルの深さでフラット化されます。nn 関係に関しては、データ モデルを慎重に作成して、そのような関係を回避し、常に 1-n または n-1 にフォールバックすることで、問題を回避したようです。
最終結果は、顧客がしばしばパフォーマンスについて不満を述べる、入り組んだ過度に複雑なシステムです。そのようなボトルネックを分析するとき、彼らはシステムが基づいているこれらの基本的な前提に決して疑問を抱かず、常に他の解決策を探します.
私は何か見落としてますか ?私は全体の考えが間違っていると思いますが、どういうわけかそれを証明 (または反証) するための反論の余地のない証拠を欠いています.アプローチは間違っています(一貫したデータモデルについて、私があまりにも妄想的で独断的であることを私に納得させます)。
私の次のステップは、独自のテスト ベンチを構築して結果を収集することです。
---- 編集注 : システムは最初、データベース システムのないフラット ファイルで構築されました...クライアントが Oracle を使用するシステムを主張したため、後でデータベースに移植されました。リファクタリングは行わず、既存のシステムにリレーショナル データベースのサポートを追加しただけです。フラット ファイルのサポートは後に削除されましたが、データベースを活用するためのリファクタリングをまだ待っています。
java - Java:経験がほとんどまたはまったくないプロジェクトを学ぶためのいくつかのステップは何ですか
業界での経験がほとんどない初心者のプログラマーとして、私が慣れていない多くのテクノロジーに基づいた新しいプロジェクトを学ぶのはイライラします。私が取り組んでいるプロジェクトには、15000行のコードを含む約150のクラスがあり、経験のないソケットとセキュリティプログラミングに重点を置いているため、どこから始めればよいかわかりません。
限られたドキュメントと手元にあるヘルプで、自習はこのプロジェクト全体を理解しようとする私の最高のリソースです。本当に集中すべき重要なクラスを見逃しながら、製品の重要でない機能を学ぶのに多くの時間を費やしていることに気付くことがよくあります...時間がかかる主な理由は、JavaAPIを頻繁に調べなければならないことです。小さなコードブロックを理解するために数分ごとに参照してください...私は最終的に試行錯誤を通してそれを学ぶと確信していますが、私が使用できるいくつかの有用なアドバイスとガイドラインがあると確信しています:)
refactoring - レガシ コードの自動文書化/分析ツールを作成するのは誰ですか? どちらが優れていますか?
他に誰が Scitools Understanding C++ のようなツールを作っていますか? どちらが優れていますか?
Ada、C、C++、および Fortran 用の最も完全な自動ドキュメンテーション ツールを探しています。ツールの移行作業を分析し、デッド コードを取り除き、重要な機能を特定するのに役立ちます。
ピート
design-patterns - デザインパターンの使用をやめる必要があるのはいつですか?
いくつかのレガシーデザインをデザインパターンに置き換えたいので、すでに機能しているコードを書き直したいと思っているので、同僚は夢中になっています。既存のコードを改善するのに役立つと思いますが、私はそれについて少し偏執的になり、どこでもそれらを使用しようとし、あるデザインパターンを別のデザインパターンに置き換えようとしているように感じます。私の同僚の何人かは、レガシーコードが機能する限り、それをそのままにしておくと言います。
いつ使用をやめるべきですか?より良いデザインに置き換える必要のあるコードと、触れない必要のあるコードの間に線を引くのはどこですか?