CA1714: フラグ列挙は、複数形の名前を含んでいなければなりません
TypeName |
FlagsEnumsShouldHavePluralNames |
CheckId |
CA1714 |
カテゴリ |
Microsoft.Naming |
互換性に影響する変更点 |
あり |
原因
パブリック列挙体に System.FlagsAttribute があり、その名前の末尾に ”s” がありません。
規則の説明
FlagsAttribute でマークされた型は複数形の名前を持ちます。これは、この属性が複数の値を指定できることを示すからです。 たとえば、曜日を定義する列挙体があり、複数の曜日を指定できるアプリケーションでの使用を目的としているとします。 このような列挙体には FlagsAttribute を追加し、名前は ”Days” などとします。 同じような列挙体で、1 つの曜日しか指定できない場合は、この属性を追加せず、名前は ”Day” などとします。
名前付け規則では、共通言語ランタイムをターゲットとするライブラリの統一的な名前の付け方が規定されています。 これにより、新しいソフトウェア ライブラリを習得するまでの時間を短縮でき、マネージ コード開発の専門家によってライブラリが開発されたという信頼を顧客に与えることができます。
違反の修正方法
列挙体の名前を複数形の語にします。同時に複数の値を指定できない列挙体の場合は FlagsAttribute 属性を削除します。
警告を抑制する状況
名前が複数形の語であっても末尾に ”s” がない場合は、違反を抑制しても安全です。 たとえば、上記の複数の曜日を指定できる列挙体の名前を "DaysOfTheWeek" とした場合、規則のロジックには違反しますが、違反の報告を受ける意味はありません。 このような違反は抑制する必要があります。
関連規則
CA1027: FlagsAttribute で列挙値をマークします
CA2217: enums を FlagsAttribute に設定しません