【設計は“進化”する】フェーズ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回




ディスカッション
コメント一覧
まだ、コメントがありません