3

大きなソース コード ファイルの先頭にあるクラスのすべての関数 (および場合によっては変数) を一覧表示するために、目次を使用しますか? その種のリストの代わりに、大きなファイルを小さなクラス/ファイルに分割して、クラス宣言が一目瞭然になることを知っています..しかし、いくつかの複雑なタスクには多くのコードが必要です. 実装を複数のファイルに細分化するのに時間を費やす価値があるかどうかはわかりませんか? または、クラス/インターフェイス宣言に加えてインデックス リストを作成しても問題ありませんか?

編集:

私がどのように目次を使用しているかをよりよく説明するために、これは私の趣味のプロジェクトの例です。実際には関数をリストするのではなく、関数内のコードブロック..しかし、とにかくアイデアを得ることができるでしょう..

/*
CONTENTS

Order_mouse_from_to_points
Lines_intersecting_with_upper_point
Lines_intersecting_with_both_points
Lines_not_intersecting
Lines_intersecting_bottom_points
Update_intersection_range_indices
    Rough_method
    Normal_method
        First_selected_item
        Last_selected_item
        Other_selected_item

*/


void SelectionManager::FindSelection()
{

    // Order_mouse_from_to_points
    ...
    // Lines_intersecting_with_upper_point
    ...

    // Lines_intersecting_with_both_points
    ...

    // Lines_not_intersecting
    ...

    // Lines_intersecting_bottom_points
    ...

    // Update_intersection_range_indices
    for(...)
    {
        // Rough_method
        ....

        // Normal_method
        if(...)
        {
            // First_selected_item
            ...

            // Last_selected_item
            ...

            // Other_selected_item
            ...
        }


    }

}

インデックス項目にはスペースがないことに注意してください。このため、それらの 1 つをクリックして F4 を押してアイテムの使用状況にジャンプし、F2 を押して戻ることができます (単純なビジュアル スタジオの次/前のショートカットを検索)。

編集:

このインデックス作成の別の解決策は、折りたたまれた C# 領域を使用することです。リージョン名のみを表示し、すべてのコードを非表示にするように Visual Studio を構成できます。もちろん、そのソースコードナビゲーションのキーボードサポートはかなり面倒です...

4

5 に答える 5

11

そのようなリストの代わりに、大きなファイルを小さなクラス/ファイルに分割して、それらのクラス宣言が一目瞭然になることを知っています。

正しい。

ただし、一部の複雑なタスクには多くのコードが必要です

正しくない。「大量」のコードが必要ですが、コードを長時間 (25 行以上) 実行するのは非常に悪い考えです。

実際には関数をリストするのではなく、関数内のコード ブロック

悪い。目次を必要とする関数は、より小さな関数に分解する必要があります。

実装を複数のファイルに細分化するのに時間を費やす価値があるかどうかはわかりませんか?

物事を小さなファイルに分割することは絶対に必須です。コードを維持、適応、再利用する人々は、得られるあらゆる支援を必要としています。

クラス/インターフェース宣言に加えてインデックスリストを作成してもよろしいですか?

いいえ。

この種のトリックに頼らなければならない場合、それは大きすぎます。

また、多くの言語には、コードから API ドキュメントを生成するツールがあります。Java、Python、C、C++ にはドキュメンテーション ツールがあります。Javadoc、epydoc、Doxygen を使用しても、知的に扱いやすい部分に分割するように設計する必要があります。

  1. 物事をよりシンプルにします。

  2. ツールを使用してインデックスを作成します。

于 2010-03-13T15:27:09.790 に答える
5

大きなインデックスを作成すると、コードを変更するときにそれを維持する必要があります。とにかく、ほとんどの最新の IDE はクラス メンバーのリストを作成します。そのようなインデックスを作成するのは時間の無駄のようです。

于 2010-03-13T15:28:03.350 に答える
1

私は自分のコードでこの種の忙しい仕事をすることは決してありません。私が手動で行うほとんどのことは、ファイル/クラスの先頭に、このモジュールが何をしたか、そしてそれがどのように使用されることを意図しているかを説明する数行を挿入することです。

メソッドとそのインターフェースのリストが役立つ場合は、Doxygenなどのツールを使用して自動的に生成します。

于 2010-03-13T17:50:23.933 に答える
0

私はこのようなことをしました。目次全体ではなく、同様の原則-コメントと問題のコードの正確な部分との間のアドホックリンクです。また、後で修正する必要があると思われるのと同じ単純化の仮定を行うコードをリンクします。

Visual Studioのタスクリストを使用して、特定の種類のコメントのリストを取得できます。コメントの形式は、[ツール]、[オプション]、[環境]、[タスクリスト]で構成できます。これは私が自分で使用することになったものではありませんが、このシステムを頻繁に使用する場合は、コードのナビゲートに役立つ可能性があるようです。

于 2010-03-13T23:23:15.203 に答える
0

そのようにメソッドを分割できる場合は、おそらくさらにメソッドを作成する必要があります。これが完了したら、IDE を使用して、初期メソッドからの静的呼び出しスタックを取得できます。

EDIT:プログラミング中にEclipseの「Show Call Hierarchy」機能を使用できます。

于 2010-03-13T17:27:37.553 に答える