8


10万行を超えるコードを使用して、既存のC++プロジェクトを拡張する必要があります。
私の質問は、そのようなプロジェクトをどこからどのように始めるかです。
コードが十分に文書化されていない場合、問題はさらに大きくなります。大規模なプロジェクトでコードフローを研究するための自動化されたツールはありますか?

ありがとう、

4

10 に答える 10

16

何かに触れる前に、ソース管理を使用してください。

于 2009-06-29T05:34:23.080 に答える
13

あなたのための本があります: レガシーコードで効果的に働く

これはツールではなく、コードをよりよく理解して変更するために使用できるさまざまなアプローチ、プロセス、および手法に関するものです。それはほとんどC++の観点からさえ書かれています。

于 2009-06-29T05:38:09.863 に答える
3

Diomidis Spinellisによる本「CodeReading」には、より大規模で未知のプロジェクトに関する概要と詳細な知識を得る方法に関する多くのアドバイスが含まれています。

第6章では、そのトピック(大規模プロジェクトへの取り組み)に焦点を当てています。また、ツール(Ch。9)とアーキテクチャ(Ch。8)に関する章には、役立つヒントが含まれている場合があります。

しかし、この本は「コード」を(読むことによって)理解することについて書かれています。メンテナンス手順に直接取り組むことはありません。

于 2009-06-29T07:32:54.920 に答える
3
  • まず、既存のインターフェースをよく調べます。
  • テストがない場合はテストを作成するか、すでに作成されているテストを拡張します。
  • ソースコードを変更します。
  • テストを実行して、変更が古い動作を何らかの形で壊していないかどうかを確認します。
于 2009-06-29T05:41:38.703 に答える
3

オブジェクト指向のリエンジニアリングについて、現在ネット上で無料で入手できる別の良い本があります: http://www.iam.unibe.ch/~scg/OORP/

于 2009-06-29T07:04:29.343 に答える
3

私が最初にすることは、製品の要件を見つけることです

このサイズの製品が要件なしで開発されることはほとんど考えられません。

要件を熟読することで、次のことができるようになります。

  • 製品 (したがってコード) が少なくとも何をすべきかを理解する
  • コードが実際にこれらの要件をどの程度満たしているか (または満たしていないか) を確認する

それ以外の場合は、コードを見て、開発者の意図を推測しようとしています...

于 2009-06-29T14:33:01.937 に答える
2

最初に行う必要があるのは、コードがどのように機能するかを理解することです。そこにあるドキュメントを読んでから、プログラムがデバッガーの下で動作するのを見てください。メインの関数/ループを見てから、ゆっくりとプログラムの奥深くまで進んでいくと、物事がどのように動作しているかについてかなり良いアイデアを得ることができます。あなたの後に続く他の人がより良い立場から始めることができるように、あなたがあなたの発見を書き留めることを忘れないでください。

于 2009-06-29T07:38:33.940 に答える
2

EXTRACT_ALLタグを設定してDoxygenを実行し、コードベースのすべての関係を文書化します。コードフローには役立ちませんが、アプリケーション全体の構造と設計に関してある程度の光を当てることができれば幸いです。

于 2009-06-29T05:41:36.020 に答える
2

PC でコードを実行できる場合は、通常はプロファイリング出力からコールグラフを作成してみてください。

また、cscope、ctags、lxr などの相互参照ツールも役立ちます。あ

時間をかけて読んだり、クラス図を作成したり、理解するのに時間がかかったコードの部分にコメントを追加したりすることは、コードベースに慣れ、それを変更/拡張する準備を整えるためのステップです。

于 2009-06-29T06:26:46.887 に答える
1

非常に優れたオーストリアのプログラマーは、プログラムを理解するには、まずプログラムが使用するデータ構造を理解する必要があると私に言いました。

于 2009-06-29T10:44:12.927 に答える