【設計は“進化”する】フェーズ3とフェーズ3.5を同時に動かして比較する

仕様が増えたらどうなる?

同じ仕様を、違う方法で実装してみると、

「増えたときに大変になる場所」が見えてきます。

今回は フェーズ3(配列) と フェーズ3.5(List) を、

同時に動かして比較します。


これまでの流れ

  • VariableVersion
  • ArrayVersion
  • OOPVersion(フェーズ3)

フェーズ3では、

  • 13人分の Student[]
  • 入力 → 1人取得 → 表示

まで完成しました。

ここで大事なこと。

完成したコードは消しません。

壊しません。

進化させます。


なぜ簡略サンプルに差し替えないのか?

授業でありがちな失敗はこれです。

比較のために簡略コードに差し替える

こうすると、

  • 「前回作った完成物」が消える
  • どこが違うのかが抽象的になる

今回は違います。

自分たちが作った完成コードをそのまま使って、違いを体験します。


ベスト構成(Mainは1つ)

static void Main()
{
    Console.WriteLine("=== フェーズ3:配列版 ===");
    RunArrayVersion();

    Console.WriteLine();
    Console.WriteLine("=== フェーズ3.5:List版 ===");
    RunListVersion();
}

Mainは1つ。

中身を「進化」させます。


フェーズ3(配列版)

これまで完成しているコードを、そのままメソッドに移動します。

static void RunArrayVersion()
{
    var students = new Student[]
    {
        new Student("山田 太郎", "自炊、散歩、絵や字を書く、ゲーム"),
        new Student("山本 二郎", "動物系動画、ゲーム(知識のみ)"),
        // …以下13人
    };

    Console.Write("1~13の番号を入力してください:");
    int number = int.Parse(Console.ReadLine());

    var student = students[number - 1];

    Console.WriteLine("名前:" + student.Name);
    Console.WriteLine("趣味:" + student.Hobby);
}

フェーズ3.5(List版)

違いは「ここだけ」です。

static void RunListVersion()
{
    var students = new List<Student>
    {
        new Student("山田 太郎", "自炊、散歩、絵や字を書く、ゲーム"),
        new Student("山本 二郎", "動物系動画、ゲーム(知識のみ)"),
        // …以下13人
    };

    Console.Write("1~人数の番号を入力してください:");
    int number = int.Parse(Console.ReadLine());

    var student = students[number - 1];

    Console.WriteLine("名前:" + student.Name);
    Console.WriteLine("趣味:" + student.Hobby);
}

見た目、ほとんど同じです。

ここでこう思った人は正しいです。

え、ほとんど同じじゃないですか?

はい。ほとんど同じです。


でも、決定的に違う瞬間があります

それが 「増やす瞬間」 です。

ライブでこれを1行追加します。

students.Add(new Student("追加テスト", "趣味"));

ここで考えてください。

配列なら?

  • 長さを変えられない
  • だから「作り直し」や「コピー」が必要になる

Listなら?

  • Add で 1行追加できる

この差が「設計の差」です。


今日のゴール

Listを完璧に覚える日ではありません。

覚えることはこれだけ。

  • 配列は 固定
  • Listは 増やせる
  • 違いは 「増やす瞬間」 に現れる

まとめ:設計は突然変わらない

設計は

  • 破壊ではなく
  • 進化です

同じソリューションの中で比較すると、

「どこが変わったか」が目で見えて分かります。


次につながります

このListを、次はWinFormsで表示します。

Consoleで作った Student が、

次は画面の中に出てきます。


訪問数 18 回, 今日の訪問数 18回

C#,List

Posted by hidepon