1. ホーム
  2. .net

[解決済み] .netでネストされたクラスを使うべき理由/タイミングは?それとも、使うべきではないのでしょうか?

2023-02-01 13:57:52

質問

Kathleen Dollard の2008年のブログ記事 で、彼女は .net でネストされたクラスを使用する興味深い理由を提示しています。しかし、彼女は FxCop がネストされたクラスを好まないことにも触れています。FxCop のルールを書いている人たちはバカではないと思うので、その立場の背後にある理由があるはずですが、私はそれを見つけることができませんでした。

どのように解決するのですか?

入れ子にするクラスが、囲むクラスにとってのみ有用である場合に、入れ子クラスを使用します。例えば、ネストしたクラスを使うと、(簡略化)みたいな書き方ができるようになります。

public class SortedMap {
    private class TreeNode {
        TreeNode left;
        TreeNode right;
    }
}

クラスの完全な定義を一箇所で行うことができ、クラスがどのように動作するかを定義するためにPIMPLの輪をくぐる必要がなく、外の世界はあなたの実装を何も見る必要がありません。

もしTreeNodeクラスが外部のものであれば、すべてのフィールドを public にするか、あるいは大量の get/set メソッドをたくさん作る必要があります。外の世界では、別のクラスが彼らのインテリセンスを汚染することになります。