より良いエンジニアを目指して

1日1つ。良くなる!上手くなる!

enum型名とプロパティ名がかぶる時どうするか

以下みたいなケース。

using System;
                    
public class Program
{
    public static void Main()
    {
        var a = new A();
        Console.WriteLine("Hello World");
    }
}

public class A {
    public enum Category {
        A,
        B
    }
    public Category Category {get; set;}
}

Compilation error (line 17, col 18): The type 'A' already contains a definition for 'Category'

となってしまうため、Categoryのプロパティ名を変えることになり

public Category Cate {get; set; }

と、ごまかすことがあり、この場合の最適解って何?と。

「.NETのクラスライブラリ設計 改訂新版 開発チーム直伝の設計原則、コーディング標準、パターン」をあたってみたところ、

プロパティの名前をプロパティの型と同じものにすることを検討する。  たとえば、次のプロパティはColor列挙体の値を取得、設定するので、その名前がColorになっています。

となるため、

using System;
                    
public class Program
{
    public static void Main()
    {
        var a = new A();
        Console.WriteLine("Hello World");
    }
}

public class A {
    public Category Category {get; set;}
}

public enum Category {
    A,
    B
}

とすることになりそうです。