C#の多次元リストを美しく書きたい

こんにちは。

これで読みづらいと感じるのは適切な抽象化が出来ていないからで、
具体的に言うと、TupleList などの汎用クラスをそのまま直接利用しているのが悪いので、それぞれ適切な名前を付けたクラスにしましょう。

例えば、Tuple<Page, string>current_page という変数に入ってるので、それこそが Page というクラス名であるべきではないでしょうか。
List<Tuple<Page, string>>current_tab とあるので Tab クラスでしょうか。深読みすると「履歴」を表現しようとしてるのかなと思うので、CurrentPage プロパティと Add() Next() Prev() メソッドを持たせたクラスにしたら良いかもしれません?
pages は実際は Tab の集まりな気がするので、名前が間違っているように見えます。

「自作のブラウザのタブのような機能」をいきなり考えているのが良くないので、まずはその1枚の「タブ」に注目した場合に単体で機能が完結しているものを作り、それから複数枚を管理するような上位クラスを作れば良いのです。
「ページ」が一枚でも機能が揃っているように、そのページを複数枚管理している「タブ」も一枚で機能が揃っていることが期待されるのです。

すなわち、この PageNavigator クラス (実際はページではなくタブを複数枚管理するクラスなので名前間違い) が持つのは private readonly List<Tab> tabs; を一つと、そのタブを操作するメソッド群になるのが正解かと思われます。

コメントを投稿

0 コメント